我似乎有一个无法访问的数组元素

时间:2016-11-08 19:10:17

标签: php arrays

我尝试访问数组元素,但由于某种原因,这给我带来了一些麻烦。

所以我在$lead内得到了这个数组:

Array
(
    ["City"] => Other
    [Company Name] => 
    [Company Email] => 
    [Contact Form URL] => 
    [Comments] => 
)

我试着像这样访问它:

var_dump($lead['"City"']);

但由于某种原因,我得到一个未定义的索引错误:

  

注意:未定义的索引:“城市”

我不知道为什么会这样?

修改

这是我使用highlight_string(print_r($lead, TRUE));时的输出:

Array
(
    ["City"] => Other
    [Company Name] => 
    [Company Email] => 
    [Contact Form URL] => 
    [Comments] => 
)

还有这段代码:

foreach($lead as $k => $v){
    var_dump($k);
    die();
}

我明白了:

string(9) ""City""

1 个答案:

答案 0 :(得分:1)

所以感谢评论,好像我的密钥开头有一个UTF-8 BOM character (EF BB BF),这就是为什么我无法访问它。当我在这里发布时,Stack Overflow似乎也剥夺了角色。

使用此代码:

foreach($lead as $k => $v){
    var_dump($k);
    die();
}

它表明密钥长度必须为9个字节。

string(9) ""City""
     //↑

在十六进制查看器的帮助下,您还可以看到EF BB BF字符。所以解决方案是使用foreach循环来获取数组元素或使用正确的键:

foreach($lead as $k => $v){
    echo $v;
    break;
}

echo $lead[chr(0xEF) .  chr(0xBB) . chr(0xBF) . '"City"'];