@nvjfdvjnkn

Как отфильтровать многомерный массив?

$array1 = array(
  array(
    "id" => 123,
    "title" => "aaa"),
  array(
    "id" => 456,
    "title" => "bbb"),
  array(
    "id" => 789,
    "title" => "ccc"),
  array(
    "id" => 101,
    "title" => "ddd")
);

$array2 = array(123, 789);


Массив array2 состоит из id товаров, которые нужно получить из массива array1
В итоге нужно либо получить новый массив, либо удалить лишнее из array1

UPDATE:

Массив array2 выглядит так:
$array2 = array(
  array(
    3 => 123),
  array(
    4 => 456)
);
  • Вопрос задан
  • 2130 просмотров
Решения вопроса 1
0xD34F
@0xD34F
$ids = array_map(function($n) {
  return array_values($n)[0];
}, $array2);

$array1 = array_filter($array1, function($n) use($ids) {
  return in_array($n['id'], $ids);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@RidgeA
Задача тривиальна и есть множество путей решения.
Что конкретно в твоем решении не работает?
Ответ написан
можно использовать array_filter
$result = array_filter($array1, function ($item) use ($array2) {
   return in_array($item['id'], $array2);
});


ну либо в цикле проверяйте каждый элемент из первого массива
Ответ написан
Ваш ответ на вопрос

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

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