簡體   English   中英

使用鍵過濾多維數組

[英]filter multidimensional array using key

給定一個數組:

{
Key1:Data,
Key5:Data
   Array1[{
      Key4:Data,
      Key5:Data
          Array2[{
             Key1:Data,
             Key6:Data}
             ]
    Array3[{
       Key1:Data
       Key5:Data
      }]
   ]  
 }

以及要刪除的鍵列表:

Key5
Array3

期望的結果是:

{
Key1:Data,
   Array1[{
      Key4:Data
          Array2[{
             Key1:Data,
             Key6:Data}
             ]

    }]  
 }

如果要刪除的密鑰更改為:

Array2
Key4

那么期望的結果是:

{
Key1:Data,
Key5:Data
   Array1[{
      Key5:Data,
   Array3[{
      Key1:Data
      Key5:Data
      }]
   ]  
 }

鍵不是數字,我嘗試過array_diff,array_diff_ukey和array_diff_key無濟於事 - 不適用於嵌套數組。 謝謝你看這個!

更新:我正在嘗試此代碼,但它沒有取消設置嵌套鍵...

function searchArray(&$array1, $array2) {
    $ret=array();
    $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array1), RecursiveIteratorIterator::SELF_FIRST);
    foreach($it as $k => $v) {
      if(is_array($k)){
        searchArray($k, $array2);}
     else{if(in_array($k,$array2)){
        unset($array1[$k]);}  //does not unset nested keys
     }
   }
}

建議?

遍歷數組,取消設置元素。

array_walk_recursive(&$array, function($item, $key){
   if(in_array($key, $keys){ unset($array[$key]); }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM