Chefranov
@Chefranov
Новичок

Как правильно использовать функции array_filter() и in_array()?

Имеется два массива:
$array1 = json_decode('[{"code": "7x1", "descr": "text1"},{"code": "7x2", "descr": "text"},{"code": "7x5", "descr": "text"}]');
$array2 = json_decode('[{"value":"7x1"},{"value":"7x2"}]');

И необходимо с помощью массива $array2 найти (отфильтровать) записи в $array1. Для этих целей вроде как должны подойти функции array_filter() и in_array()

Пытаюсь сделать так:
$result = array_filter($array1, fn($row) => in_array($row['code'], $array2));

но не выходит
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$values = array_column($array2, 'value');
$result = array_filter($array1, fn($n) => in_array($n->code, $values));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Не знаю, как на стрелочных функциях, но на классической анонимной функции внутрь ее контекста нужно передавать доп. аргументы через use (замыкание):
$array2_ = array_map(function($row){return $row['value'];}, $array2); // тут бы value вытащить в отдельный массив
$result = array_filter($array1, function($row) use ($array2_) {return in_array($row['code'], $array2_);});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 19:42
49000 руб./за проект
25 апр. 2024, в 19:41
2000 руб./за проект
25 апр. 2024, в 19:22
18000 руб./за проект