如何使用PHP从数组中删除JSON键?
我有以下数组,我希望能够从JSON对象中删除所有“phonenumber”键,当然还有它的值。只有按键“phonenumber”不是整个对象。我该怎么做如何使用PHP从数组中删除JSON键?,php,json,Php,Json,我有以下数组,我希望能够从JSON对象中删除所有“phonenumber”键,当然还有它的值。只有按键“phonenumber”不是整个对象。我该怎么做 [ { "role": "admin", "id": "59df4ef2d8d39", "email": "a@a.dk", "name": "A", "lastname": "A", "password": "1", "im
[
{
"role": "admin",
"id": "59df4ef2d8d39",
"email": "a@a.dk",
"name": "A",
"lastname": "A",
"password": "1",
"image": "img_webshop\/userimage-59dfb91515810.png"
},
{
"role": "user",
"id": "59df4f1b070e6",
"phonenumber": "12345678",
"name": "B",
"lastname": "B",
"password": "2",
"image": "img_webshop\/userimage-59e37de69475b.png"
},
{
"role": "user",
"id": "59dfc0cb07985",
"email": "c@c.dk",
"name": "C",
"lastname": "C",
"password": "3",
"image": "img_webshop\/userimage-59dfc0cb06c5f.png"
},
{
"role": "user",
"id": "59dfc22f26f78",
"phonenumber": "87654321",
"name": "D",
"lastname": "D",
"password": "4",
"image": "img_webshop\/userimage-59dfc22f2638d.png"
},
{
"role": "user",
"id": "59dfc460b261e",
"email": "e@e.dk",
"name": "E",
"lastname": "E",
"password": "5",
"image": "img_webshop\/userimage-59dfc460af866.png"
}
]
或使用引用
// make array
$array = json_decode($your_json_string, true);
// loop through array using reference
foreach($array as &$item){
// unset specific key
unset($item["phonenumber"]);
}
// unset reference
unset($item);
// make json again
// you may remove JSON_PRETTY_PRINT flag, I kept it just to see o/p
$json_string_modified = json_encode($array,JSON_PRETTY_PRINT);
我认为你不需要isset测试。如果不存在,unset不会出错。这可能会使用大量内存来创建克隆数组,速度比@3161993慢。是的,您是对的,但某些php版本不会删除对象属性。如果此属性受保护,则无法进行任何更改您在这里处理的是数组,而不是对象。
// make array
$array = json_decode($your_json_string, true);
// loop through array using reference
foreach($array as &$item){
// unset specific key
unset($item["phonenumber"]);
}
// unset reference
unset($item);
// make json again
// you may remove JSON_PRETTY_PRINT flag, I kept it just to see o/p
$json_string_modified = json_encode($array,JSON_PRETTY_PRINT);
$jsonArray=json_decode($data);
//Remove unvanted props
foreach ($jsonArray as $key=>$row) {
foreach ($row as $prop=>$field) {
if ($prop != 'phonenumber')
$newArray[$key][$prop] = $field;
}
}
$jsonArray=json_encode($newArray);