wprivalov
@wprivalov
Разрабатываю на Yii2

Как исключить значения из массива?

Есть два массива.
Массив №1
Array
(
    [1] => яблоко
    [2] => груша
    [3] => арбуз
    [4] => морковка
    [5] => огуречик
)

Массив №2
Array
(
    [1] => 4
    [2] => 5
)

т.е значения второго массива это ключи первого
Как получить на выходе такой
Array
(
    [4] => морковка
    [5] => огуречик
)
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
0xD34F
@0xD34F
array_filter($arr1, fn($n) => in_array($n, $arr2), ARRAY_FILTER_USE_KEY)

Если сохранять ключи необязательно, то

array_map(fn($n) => $arr1[$n], $arr2)
Ответ написан
Stalker_RED
@Stalker_RED
$food = [
    1 => 'яблоко',
    2 => 'груша',
    3 => 'арбуз',
    4 => 'морковка',
    5 => 'огуречик',
];

$keys = [4,5];

$filtered = array_filter($food, function($food_key) use ($keys) {
	return in_array($food_key, $keys);
}, ARRAY_FILTER_USE_KEY);

Демо: https://ideone.com/ZumLMn
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@JohnDidact
Нуб во всём
"перевернуть" второй массив функцией array_flip() и найти схождения двух массивов функцией array_intersect_key() типа:
$arr2 = array_flip($arr2);
$arrResult = array_intersect_key($arr1, $arr2);

Или одной строкой:
$arrResult = array_intersect_key($arr1, array_flip($arr2));
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы