关联数组中缺少值,但使用 var_dump() 可见值
Missing value in associative array, but value visible with var_dump()
我有一个名为 $product
的简单关联数组。
这是 var_dump[$product]
的样子
array(5) {
["sku"]=>
string(9) "001R00610"
["name"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["image_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["small_image_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["thumbnail_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
}
但是当我尝试使用 var_dump($product['sku'])
获取 sku 的值时 returns null?
var_dump($product['sku']);
returns
NULL
我注意到 sku
处似乎有一个换行符,但我不确定是什么原因造成的,或者这是否与我的问题有关。
php 不会在带有 var_dump 的键中打印换行符,它们变成 space 字符,但在访问器中仍然是换行符。此代码:
$obj = array("foo\r" => "bar");
var_dump($obj);
打印这个:
array(1) { ["foo "]=> string(3) "bar" }
并且无法通过此访问:
$obj["foo"]; //returns null
$obj["foo "]; //returns null
仅:
$obj["foo\n"] //returns bar
作为数组键作为位进行比较(我认为)。
已解决
正如@aynber 所建议的,我尝试做一个 var_dump(array_keys($product));
returned this:
array(5) {
[0]=>
string(6) "sku"
[1]=>
string(4) "name"
[2]=>
string(11) "image_label"
[3]=>
string(17) "small_image_label"
[4]=>
string(15) "thumbnail_label"
}
数组键 sku 的长度错误。
正如@Nigel Ren 所指出的,数组是从 CVS 创建的。从 UTF-8-BOM
转换为 UTF-8
后,它 return 预期值。
var_dump($product['sku']);
returns string(9) "001R00610"
我有一个名为 $product
的简单关联数组。
这是 var_dump[$product]
array(5) {
["sku"]=>
string(9) "001R00610"
["name"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["image_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["small_image_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
["thumbnail_label"]=>
string(28) "Xerox 001R00610 Transfer Kit"
}
但是当我尝试使用 var_dump($product['sku'])
获取 sku 的值时 returns null?
var_dump($product['sku']);
returns
NULL
我注意到 sku
处似乎有一个换行符,但我不确定是什么原因造成的,或者这是否与我的问题有关。
php 不会在带有 var_dump 的键中打印换行符,它们变成 space 字符,但在访问器中仍然是换行符。此代码:
$obj = array("foo\r" => "bar");
var_dump($obj);
打印这个:
array(1) { ["foo "]=> string(3) "bar" }
并且无法通过此访问:
$obj["foo"]; //returns null
$obj["foo "]; //returns null
仅:
$obj["foo\n"] //returns bar
作为数组键作为位进行比较(我认为)。
已解决
正如@aynber 所建议的,我尝试做一个 var_dump(array_keys($product));
returned this:
array(5) {
[0]=>
string(6) "sku"
[1]=>
string(4) "name"
[2]=>
string(11) "image_label"
[3]=>
string(17) "small_image_label"
[4]=>
string(15) "thumbnail_label"
}
数组键 sku 的长度错误。
正如@Nigel Ren 所指出的,数组是从 CVS 创建的。从 UTF-8-BOM
转换为 UTF-8
后,它 return 预期值。
var_dump($product['sku']);
returns string(9) "001R00610"