多维数组值与另一个索引数组值匹配,然后在PHP 7中从多维值中删除值

问题描述 投票:0回答:2

我有两个数组以下

    $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
                )
        )
)
php php-7
2个回答
1
投票
$newArray = array_map( function ($v) use ($secondArray) { return ['MemberList' => array_diff($v['MemberList'], $secondArray)]; }, $firstArray );
小提琴here

0
投票
您可以在这里使用递归;请参阅内联文档。

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 ) ) )
© www.soinside.com 2019 - 2024. All rights reserved.