在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开始的连续数字序列,则所有键都将编码为字符串,并为每个键值对显式指定。”