这是一个奇怪的,我不知道发生了什么。
我有一个存储在名为$suppliers
的变量中的关联数组。
这是一个稍微清理过的var_dump( $suppliers )
:
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循环中访问Company元素,如下所示:
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"
我检查了不可见的字符,字符编码问题,似乎没有任何东西可以直接输出Company元素的值。
如果我这样做:
foreach( $suppliers as $supplier ):
foreach( $supplier as $key => $value ):
var_dump( $supplier[$key] );
endforeach;
endforeach;
我能够输出"公司"元素,但这是唯一可行的方式。
有什么想法?元素键中是否存在可能导致类似问题的不可见字符或编码问题?
答案 0 :(得分:2)
["公司"]似乎有一个不好的角色。
您可以将代码修改为以下内容,以确认存在错误字符:
foreach( $suppliers as $supplier ):
foreach( $supplier as $key => $value ):
var_dump( htmlentities($key) );
endforeach;
endforeach;
这将为我返回以下内容:
string(28) "Company"
string(7) "Website"
string(6) "Brands"
string(8) "Contacts"