[英]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.