2017-02-23 6 views
0

これは奇妙なことです。何が起きているのか分かりません。値が存在してもキーでアクセスするとNULLを返す連想配列の要素

私は連想配列を$suppliersという変数に格納しています。

これは少しvar_dump($suppliers)をクリーンアップされています。私はそうのようなforeachループで会社要素にアクセスしようとしている

array(2) { 
     array(4) { 
      ["Company"]=> 
      string(9) "Microsoft" 
      ["Website"]=> 
      string(20) "http://microsoft.com" 
      ["Brands"]=> ... 
      ["Contacts"]=> ... 
     } 
     array(4) { 
      ["Company"]=> 
      string(6) "Google" 
      ["Website"]=> 
      string(17) "http://google.com" 
      ["Brands"]=> ... 
      ["Contacts"]=> ... 
     } 
    } 

foreach($suppliers as $supplier): 
     var_dump($supplier['Company']); 
endforeach; 

をしかし、私はこのためにNULLを取得しています毎回の価値。他のすべての値は、ループ内からアクセスすることができます。

foreach($suppliers as $supplier): 
     var_dump($supplier['Company']); 
     var_dump($supplier['Website']); 
endforeach; 

戻り値:私は目に見えない文字、文字エンコーディングの問題、そして何のためにチェックしました

NULL 
string(20) "http://microsoft.com" 
NULL 
string(17) "http://google.com" 

は直接の値を出力するために動作するようです会社要素。

私が行う場合:

foreach($suppliers as $supplier): 
    foreach($supplier as $key => $value): 
     var_dump($supplier[$key]); 
    endforeach; 
endforeach; 

私は「会社」の要素を出力することができるよ、それはそれが動作する唯一の方法です。

どのような考えですか?要素キーに、このような問題を引き起こす可能性のある、不可視の文字やエンコードの問題以外のものがありますか?

+0

やってみ 'エコーのvar_dump($:

foreach($suppliers as $supplier): foreach($supplier as $key => $value): var_dump(htmlentities($key)); endforeach; endforeach; 

これが私のために、以下の返しサプライヤー[0] ['Company']); '何かを返すかどうかを調べる。 – Condorcho

答えて

2

["Company"]には、不適切な文字が含まれているようです。

あなたが悪いの文字があることを確認するために、次のようにコードを変更することができます。

string(28) "Company" 
string(7) "Website" 
string(6) "Brands" 
string(8) "Contacts" 
+0

ハ!ありがとうございました!私は見ていないものがあるかどうかを確認するためにIDEの表示されていない文字に頼っていましたが、あなたはまったく正しいです。 –

関連する問題