相当难以解释,但是例如我有一个数组:
$lol = array(
'key' => 'value',
'key_1' => 'value 1',
'simple_value',
'0' => 'lol',
'key_array' => array(
'key_in_second' => 'value_with_key_in_second',
'value_in_second_array',
)
);
json_encode
之后会是
{"key":"value","key_1":"value 1","0":"lol","key_array":{"key_in_second":"value_with_key_in_second","0":"value_in_second_array"}}
那么有可能以某种方式检测php
数组中是否有密钥或注释?在我的示例中,元素'simple_value', '0' => 'lol'
具有相同的键。
答案 0 :(得分:2)
PHP并不关心数字0是否在引号中。它将它存储为数字0,与'value_in_second_array'相同将为0,因为它是没有键的第一个元素。
基本上,
array('0'=>'lol')
与array(0=>'lol')
相同,array('lol')
也一样;
你会看到simple_value消失了,因为它被lol覆盖。
答案 1 :(得分:2)
JSON准确地反映了php。例如,如果您有此代码:
<?php
$lol = array(
'key' => 'value',
'key_1' => 'value 1',
'simple_value',
'0' => 'lol',
'key_array' => array(
'key_in_second' => 'value_with_key_in_second',
'value_in_second_array',
)
);
print_r($lol);
输出结果为:
Array
(
[key] => value
[key_1] => value 1
[0] => lol
[key_array] => Array
(
[key_in_second] => value_with_key_in_second
[0] => value_in_second_array
)
)
这里发生的事情是,由于simple_value
没有密钥,因此为其分配了一个0的密钥,但随后被lol
覆盖了。您还可以查看value_in_second_array
如何自动分配0键。
所以,与json_encode
无关,你只是从来没有PHP中的数据。