即使存在值,关键数据元素也会在按键访问时返回NULL

时间:2017-02-23 20:23:07

标签: php

这是一个奇怪的,我不知道发生了什么。

我有一个存储在名为$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;

我能够输出"公司"元素,但这是唯一可行的方式。

有什么想法?元素键中是否存在可能导致类似问题的不可见字符或编码问题?

1 个答案:

答案 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"