关联数组中缺少值,但是值在var_dump()中可见

时间:2019-04-04 15:04:19

标签: php arrays associative-array

我有一个名为$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的值时,它返回空值吗?

var_dump($product['sku']);

返回

NULL

我注意到sku似乎有换行符,但是我不确定是什么原因引起的,或者是否与我的问题有关。

2 个答案:

答案 0 :(得分:1)

php不会使用var_dump在键中打印换行符,它们成为空格字符,但仍在访问器中换行。这段代码:

$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

当数组键被作为位进行比较时(我认为)。

答案 1 :(得分:0)

已解决

根据@aynber的建议,我尝试执行var_dump(array_keys($product));并返回以下内容:

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后,它将返回期望值。

var_dump($product['sku']);返回string(9) "001R00610"