很难解释,但是例如我有一个数组:

$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'具有相同的键。

===============>>#1 票数:2

PHP不在乎数字0是否用引号引起来。 它将其存储为数字0,与“ value_in_second_array”将为0相同,因为它是没有键的第一个元素。

基本上,

array('0'=>'lol')array(0=>'lol')相同array('lol') ;

您会看到simple_value消失了,因为它已被lol覆盖。

===============>>#2 票数: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中的数据。

  ask by user1692333 translate from so

未解决问题?本站智能推荐: