json_encode 函数的奇怪行为

Ken*_*nas 0 php

我有这个普通的数组名称 $arr.. 并尝试使用 array_push() 函数将某些内容推送到数组上.. 就像array_push( $arr['alerts_data'], 999 ); 它产生以下输出:

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

)
Run Code Online (Sandbox Code Playgroud)

当我使用 json_encode 时,我得到:

{"alerts_data":[169,175,111,48,111,999]}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试 unset() $arr 中的某些内容时,例如:

unset( $arr['alerts_data'][4] );// will remove removes the 999
Run Code Online (Sandbox Code Playgroud)

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

{"alerts_data":{"0":169,"1":175,"2":111,"3":48}}
Run Code Online (Sandbox Code Playgroud)

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

Mad*_*iha 5

是的,这是因为数组键不再连续,所以它被视为关联数组,而 PHP 关联数组变成了 JavaScript 对象,因为 JavaScript 没有关联数组。

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