unset数组元素后 重新排列索引 并转为json格式


把一个索引数组内的某个元素删除后直接转成json输出,数据格式不正确。


那就需要在转成json之前把删除后的数组处理一下,因为前端只支持连续的索引数组


其实方法有很多种,例如

重新定义一个空数组,循环旧数组,把数据添加到新数组里foreach ($infos as $key => $value) { $infos[$key] = array_values($value); }

或是用array_splice($infos,0,1);


说实话。这两种方法都试过了 都不对 可能是我写错了  不过我用最简便的一种方法解决了unset数组元素后 重新排列索引 并转为json格式

代码如下:

$arr = array(array(1,23),array(1,23),array(1,23));

var_dump($arr);
print_r(json_encode($arr));

foreach($arr as $k=>$v)
{
  //符合条件的数据销毁
  if ($k == 1){
    unset($arr[$k]);
  }
}
var_dump($arr);
print_r(json_encode($arr));die;


返回的json数据格式如下:
unset数组元素后 重新排列索引 并转为json格式

可以看到数组格式在unset后发生变化 解决方法很简单 仅一行代码就可以解决
在foreach后 增加
$arr = array_values($arr);

问题就完美解决了