Значения многомерного массива сопоставляются со значениями другого индексного массива, а затем удаляют значения из многомерного в PHP 7 - PullRequest
0 голосов
/ 17 октября 2019

У меня ниже двух массивов

    $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
                )
        )
)

Ответы [ 2 ]

1 голос
/ 17 октября 2019
$newArray = array_map(
    function ($v) use ($secondArray) { 
        return ['MemberList' => array_diff($v['MemberList'], $secondArray)]; 
    }, 
    $firstArray
);

Скрипка здесь .

0 голосов
/ 17 октября 2019

Вы можете использовать рекурсию здесь;см. встроенный документ.

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);
        } elseif (in_array($value, $secondArray)) {
            // if got value as leaf then check with secondArray, if exist unset,
            unset($firstArray[$key]);
        }
    }
    return $firstArray;
}
$new = custom($firstArray, $secondArray);
print_r($new);

Демо

Выход

Array
(
    [1] => Array
        (
            [MemberList] => Array
                (
                    [1] => 5d6
                    [2] => 5d7
                )

        )

    [3] => Array
        (
            [MemberList] => Array
                (
                    [0] => 5d8
                )

        )

)
...