<分区>
当您将带有数字字段的对象(参见 $obj
)转换为数组时,您无法访问它的元素
$obj = new stdClass();
$obj->{"325890"} = "test";
$arr = (Array) $obj;
$key = array_keys($arr)[0];
var_dump($arr); // array (size=1) '325890' => string 'test' (length=4)
var_dump($key); // string '325890' (length=6)
var_dump($arr["325890"]); // null
var_dump($arr[325890]); // null
var_dump($arr[$key]); // null
$arr = unserialize(serialize($arr)); // this fixes that
var_dump($arr["325890"]); // string 'test' (length=4);
当您将数据分配给同一元素时,还会发生一些奇怪的事情:
$arr = (Array) $obj;
$arr[325890] = "test"; // or $arr["325890"] = "test";
var_dump($arr);
array (size=2)
'325890' => string 'test' (length=4)
325890 => string 'test' (length=4)
这是错误还是记录在案的行为?我正在使用 PHP 7.1.2
我在尝试使用数字键访问 JSON 元素时发现了一个小错误。
$items = Array(
"100" => "item",
"200" => "item",
"300" => "item",
"400" => "item",
);
$json = json_encode($items);
$items = (Array) json_decode($json);
var_dump($items[100]); // null