在PHP中搜索和删除数组中的特定对象

在PHP中搜索和删除数组中的特定对象,php,Php,我有这样一个数组的结构: [{"name":"username1","id":0},{"name":"username2","id":1}] 在我的mysql数据库中,它是json编码的 我试图搜索一个特定的id,删除该对象并保存其他数组 $arr_data=json_decode($jsonData); foreach(arr_data as $k=>

我有这样一个数组的结构:

[{"name":"username1","id":0},{"name":"username2","id":1}]
在我的mysql数据库中,它是json编码的 我试图搜索一个特定的id,删除该对象并保存其他数组

$arr_data=json_decode($jsonData);
         foreach(arr_data as $k=> $data)
            {
             if($request->id==$data->id)
                {
                  unset($arr_data[$k]);
                  $updateData =  DataTable::where(['id'=>$request->id])
                    ->update(['update_column' =>json_encode($arr_data)]);
                }
            }
问题是我的数据在删除后没有以正确的格式存储

新的json格式数据以以下格式存储:

{"1":{"name":"username1","id":1}}
任何解决这个问题的建议。

这对我来说很有用

$jsonData = '[{"name":"username1","id":0},{"name":"username2","id":1},{"name":"username2","id":2}]';

$arr_data=json_decode($jsonData);

if(($index = array_search($request->id, array_column( $arr_data, 'id'))) !== false) {
  unset($arr_data[$index]);
  $arr_data = array_values($arr_data);
}

$updateData =  DataTable::where(['id'=>$request->id])
                ->update(['update_column' =>json_encode($arr_data)]);

@LelioFaieta:在我上面的代码中,索引被删除,但我必须保存格式未正确保存的剩余数组元素。答案:演示如何从新数据中删除键。保留数组键,除非它认为可以省略这些键:“在编码数组时,如果键不是从0开始的连续数字序列,则所有键都将编码为字符串,并为每个键值对显式指定。”