我有这个正常的数组名称$ 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。
答案 0 :(得分:4)
是的,因为数组键不再连续,所以它被视为关联数组,PHP关联数组成为JavaScript对象,因为JavaScript没有关联数组。
使用 array_splice()
从阵列中干净地删除元素。
答案 1 :(得分:2)
您的密钥有一个间隙(从3到5),因此必须创建一个对象才能使其有效。两种可能的解决方案:
array_splice($arr['alerts_data'], 4, 1);
unset($arr['alerts_data'][4]);
$arr['alerts_data'] = array_values($arr['alerts_data']);