我有两个数组以下
$firstArray = Array
(
[1] => Array
(
[MemberList] => Array
(
[0] => 100
[1] => 5d6
[2] => 5d7
)
)
[3] => Array
(
[MemberList] => Array
(
[0] => 5d8
[1] => 200
)
)
)
$secondArray = Array
(
[0] => 100
[1] => 200
)
我的问题是,假设$secondArray
数组值与$firstArray
数组匹配,那么我必须从$firstArray
中删除值
我的预期输出
$firstArray = Array
(
[1] => Array
(
[MemberList] => Array
(
[0] => 5d6
[1] => 5d7
)
)
[3] => Array
(
[MemberList] => Array
(
[0] => 5d8
)
)
)
$newArray = array_map(
function ($v) use ($secondArray) {
return ['MemberList' => array_diff($v['MemberList'], $secondArray)];
},
$firstArray
);
小提琴here。
function custom($firstArray, $secondArray) {
foreach ($firstArray as $key => $value) {
if (is_array($value)) {
// check if value still got array if so, callback
$firstArray[$key] = custom($value, $secondArray);
}else{
// if got value as leaf then check with secondArray, if exist unset,
if(in_array($value,$secondArray)){
unset($firstArray[$key]);
}
}
}
return $firstArray;
}
Demo输出
Array ( [1] => Array ( [MemberList] => Array ( [1] => 5d6 [2] => 5d7 ) ) [3] => Array ( [MemberList] => Array ( [0] => 5d8 ) ) )