'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() невероятно универсальным инструментом для задач преобразования данных.
Задание
ЛегкоВы получите два входных значения: список 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 знаков после запятой
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров6Функции высшего порядка для массивов
Преобразование с помощью 'array_map''array_map' с пользовательской функциейФильтрация с помощью 'array_filter''array_filter' с пользовательской функциейСвертка с помощью 'array_reduce'Обход с помощью 'array_walk'Итоги: Обработка данныхПотренируйтесь самостоятельно: Онлайн-компилятор PHP