0

我有这个正常的数组名称 $arr.. 并尝试使用 array_push() 函数在数组上推送一些东西.. 就像array_push( $arr['alerts_data'], 999 ); 它产生这个输出一样:

Array
(
    [alerts_data] => Array
        (
            [0] => 169
            [1] => 175
            [2] => 111
            [3] => 48
            [4] => 999
        )

)

当我使用 json_encode 我得到:

{"alerts_data":[169,175,111,48,111,999]}

但是,当我尝试从 $arr 中取消设置()时,例如:

unset( $arr['alerts_data'][4] );// will remove removes the 999

然后再次使用 json_encode,我得到了这个 json 对象

{"alerts_data":{"0":169,"1":175,"2":111,"3":48}}

这里有什么问题?你能告诉?我想通过使用 unset() 函数来实现上面第一个编码的 json。

4

2 回答 2

5

是的,这是因为数组键不再是连续的,所以它被当作一个关联数组来处理,而 PHP 的关联数组变成了 JavaScript 对象,因为 JavaScript 没有关联数组。

用于array_splice()从数组中干净地删除元素。

于 2012-11-21T17:16:57.733 回答
2

您的键中有一个间隙(从 3 到 5),因此必须创建一个对象才能使其有效。两种可能的解决方案:

array_splice($arr['alerts_data'], 4, 1);

unset($arr['alerts_data'][4]);
$arr['alerts_data'] = array_values($arr['alerts_data']);
于 2012-11-21T17:21:48.133 回答