Menu
Coddy logo textTech

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

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

Хотя встроенные функции, такие как strtoupper, хорошо работают с array_map(), настоящая сила раскрывается при использовании собственных custom-функций. Это позволяет создавать преобразования, адаптированные к вашим конкретным потребностям.

Чтобы использовать custom function с array_map(), просто передайте имя функции как string в качестве первого параметра. Ваша custom function должна принимать один параметр (текущий элемент массива) и возвращать преобразованное значение.

<?php
function doubleNumber($num) {
    return $num * 2;
}

$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Результат: [2, 4, 6, 8, 10]
?>

Этот подход предоставляет вам полный контроль над обработкой каждого элемента. Вы можете выполнять сложные вычисления, операции со string или любую другую логику внутри своей custom function, что делает array_map() невероятно универсальным инструментом для задач преобразования данных.

challenge icon

Задание

Легко

Вы получите два входных значения: список temperatures в градусах Celsius, разделённых запятыми, и target unit для conversion (либо F для Фаренгейта, либо K для Кельвина). Первый вход содержит temperatures в виде string в формате 0,10,20,30,100, а второй вход — один символ, указывающий тип conversion.

Read оба входных значения, преобразуйте разделённые запятыми temperatures в array numbers, создайте custom function, которая преобразует температуру Celsius в target unit, используйте array_map() с вашей custom function для преобразования all temperatures и выведите каждую converted temperature в отдельной строке, rounded до 2 decimal places.

Формулы conversion:

  • Celsius в Фаренгейт: (C × 9/5) + 32
  • Celsius в Кельвин: C + 273.15

Формат ввода:

  • Первая строка: temperatures в Celsius, разделённые запятыми (пример: 0,10,20,30,100)
  • Вторая строка: target conversion unit — либо F, либо K (пример: F)

Ожидаемый вывод: Каждая converted temperature выводится в отдельной строке, rounded до 2 decimal places

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

<?php
// Прочитать температуры, разделённые запятыми
$temperatures = fgets(STDIN);

// Прочитать целевую единицу (F или K)
$unit = trim(fgets(STDIN));

// Преобразовать строку, разделённую запятыми, в массив чисел
$tempArray = explode(',', trim($temperatures));

// TODO: Напишите ваш код ниже
// Создать пользовательскую функцию для преобразования Цельсия в целевую единицу
// Использовать array_map() для применения преобразования ко всем температурам
// Вывести каждую преобразованную температуру на отдельной строке, округлённую до 2 знаков после запятой

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

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

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

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