Как при переборе массива foreach php не выводить значения нескольких элементов?

Рейтинг: 0Ответов: 1Опубликовано: 01.04.2023

У меня возник вопрос. Как при переборе массива foreach php не выводить значения нескольких элементов? Я написал следующий код, но работает только с одним значением, а как сделать чтобы не выводилось несколько значений.

<?php
    $arr = [1, 2, 3, 4, 3];
    $val = 3;
 
    echo "The original array is " . json_encode($arr) . "\n";
 
    $filtered = array_values(array_filter($arr, function($value) use ($val) {
        return $value !== $val;
    }));
 
    echo "The filtered array is " . json_encode($filtered) . "\n";
 
    /*
        результат:
 
        Исходный массив [1,2,3,4,3]
        Отфильтрованный массив [1,2,4]
    */
?>

Ответы

▲ 2Принят

Если я правильно понял задачу то тут поможет метод in_array который проверит есть ли указанное значение в массиве, ну и разумеется мы должны инвертировать результат в данном случае:

<?php
    $arr = [1, 2, 3, 4, 3];
    $val = [1, 3];
 
    echo "The original array is " . json_encode($arr) . "\n";
 
    $filtered = array_values(array_filter($arr, function($value) use ($val) {
        return !in_array($value,  $val);
    }));
 
    echo "The filtered array is " . json_encode($filtered) . "\n";
 
    /*
        результат:
 
        Исходный массив [1,2,3,4,3]
        Отфильтрованный массив [2,4]
    */
?>