Menu
CoddyTech

'array_filter' с пользовательской функцией

Часть раздела Логика и управление потоком путешествия по PHP на Coddy. Урок 42 из 68.

В то время как array_filter() без callback-функции удаляет пустые значения, его истинная сила проявляется, когда вы предоставляете пользовательскую callback-функцию. Это позволяет вам точно определить, какие элементы следует оставить, основываясь на ваших конкретных критериях.

Чтобы использовать пользовательскую функцию с array_filter(), передайте имя вашей функции в качестве второго параметра. Ваша функция обратного вызова должна принимать один параметр (текущий элемент массива) и возвращать true, чтобы сохранить элемент, или false, чтобы исключить его.

<?php
function isEven($number) {
    return $number % 2 === 0;
}

$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// Результат: [2, 4, 6, 8]
?>

В этом примере функция isEven проверяет каждое число с помощью оператора остатка от деления. Только числа, которые возвращают true (четные числа), включаются в отфильтрованный результат. Этот подход дает вам полный контроль над логикой фильтрации, делая array_filter() невероятно универсальной для задач обработки данных.

challenge icon

Задание

Легко

Вы получите два входных значения: список цен на товары, разделенных запятыми, и минимальный порог цены. Первый ввод содержит цены в виде строки в формате 15.99,45.00,8.50,120.00,22.75, а второй ввод — это минимальный порог цены в виде числа (например: 20).

Прочитайте оба входных значения, преобразуйте разделенные запятыми цены в массив чисел, создайте пользовательскую функцию обратного вызова (callback), которая проверяет, больше ли цена или равна порогу, используйте array_filter() с вашей пользовательской функцией, чтобы оставить только те цены, которые соответствуют порогу, и выведите каждую отфильтрованную цену на отдельной строке в том порядке, в котором они появляются.

Ваша пользовательская функция обратного вызова должна принимать один параметр (цену) и возвращать true, если цена больше или равна порогу, или false в противном случае.

Формат входных данных:

  • Первая строка: Цены на товары через запятую (например: 15.99,45.00,8.50,120.00,22.75)
  • Вторая строка: Минимальный порог цены в виде числа (например: 20)

Ожидаемый результат: Каждая цена, которая соответствует порогу или превышает его, выводится на отдельной строке с сохранением исходного порядка

Попробуйте сами

<?php
// Чтение входных данных
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));

// Преобразование цен, разделенных запятыми, в массив
$prices = array_map('floatval', explode(',', $prices_input));

// TODO: Напишите свой код ниже
// Создайте пользовательскую функцию обратного вызова, которая проверяет, что цена >= threshold
// Используйте array_filter() с вашей пользовательской функцией
// Выведите каждую отфильтрованную цену на отдельной строке

?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор PHP