2

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

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

4

2 回答 2

2

PHP 不关心数字 0 是否在引号中。它将它存储为数字 0,与 'value_in_second_array' 将是 0 相同,因为它是第一个没有键的元素。

基本上,

array('0'=>'lol')是一样的array(0=>'lol')是一样的array('lol');

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

于 2013-04-17T22:56:01.393 回答
2

JSON 准确地反映了 php.ini 文件。例如,如果您有以下代码:

<?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 中的数据。

于 2013-04-17T23:01:43.720 回答