如何使用PHP从数组中删除JSON键?

如何使用PHP从数组中删除JSON键?,php,json,Php,Json,我有以下数组,我希望能够从JSON对象中删除所有“phonenumber”键,当然还有它的值。只有按键“phonenumber”不是整个对象。我该怎么做 [ { "role": "admin", "id": "59df4ef2d8d39", "email": "a@a.dk", "name": "A", "lastname": "A", "password": "1", "im

我有以下数组,我希望能够从JSON对象中删除所有“phonenumber”键,当然还有它的值。只有按键“phonenumber”不是整个对象。我该怎么做

[
    {
        "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);