@kolomat

Как отфильтровать многомерный массив при помощи значений в одномерном массиве?

Есть массив А:

Array
(
    [0] => Array
        (
            [id] => 3q5IVNjMHtcy6
            [number] => 1010
        )

    [1] => Array
        (
            [id] => hE3saoTIt
            [number] => 2020
        )

    [2] => Array
        (
            [id] => cypAsPXoNE
            [number] => 3030
        )

    [3] => Array
        (
            [id] => jLpF3X7
            [number] => 4040
        )
)

И есть массив Б:

Array
        (
            [0] => 2020
            [1] => 4040
        )

Надо отфильтровать первый массив и получить

Array
(
    [0] => Array
        (
            [id] => 3q5IVNjMHtcy6
            [number] => 1010
        )

    [2] => Array
        (
            [id] => cypAsPXoNE
            [number] => 3030
        )
)
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@alexalexes
$filtered_arr = array_filter($arr, function ($el) use ($arr2) { 
            return !in_array($el['number'], $arr2);
        }
    });

В фильтрующей функции на return вы подаете выражение, которое можно перевести или трактовать как булевый результат true/false, по которому вы должны оставить поданный внутрь функции элемент $el в $filtered_arr.
PS: Будьте осторожны с in_array - эта функция чувствительна к типу данных элемента и элементов массива, она их сравнивает как ===. Это на случай, если у вам в сравнении будут якобы числа, например, вместо 1010 будет '1010'.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Да, возможно. array_filter со своей callback-функцией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы