'array_map' с пользовательской функцией
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 40 из 68.
Хотя встроенные функции, такие как strtoupper, хорошо работают с array_map(), настоящая мощь проявляется при использовании ваших собственных пользовательских функций. Это позволяет создавать специфические преобразования, адаптированные под ваши конкретные нужды.
Чтобы использовать пользовательскую функцию с array_map(), просто передайте имя функции в виде строки в качестве первого параметра. Ваша пользовательская функция должна принимать один параметр (текущий элемент массива) и возвращать преобразованное значение.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Результат: [2, 4, 6, 8, 10]
?>Этот подход дает вам полный контроль над тем, как обрабатывается каждый элемент. Вы можете выполнять сложные вычисления, манипуляции со строками или любую другую логику внутри вашей пользовательской функции, что делает array_map() невероятно универсальным инструментом для задач по преобразованию данных.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоВы получите два входных значения: список температур в градусах Цельсия, разделенных запятыми, и целевую единицу измерения для преобразования (либо F для Фаренгейта, либо K для Кельвина). Первый ввод содержит температуры в виде строки в формате 0,10,20,30,100, а второй ввод — это один символ, указывающий тип преобразования.
Прочитайте оба ввода, преобразуйте разделенные запятыми температуры в массив чисел, создайте пользовательскую функцию, которая преобразует температуру из Цельсия в целевую единицу, используйте array_map() с вашей пользовательской функцией для преобразования всех температур и выведите каждую преобразованную температуру на отдельной строке, округленную до 2 знаков после запятой.
Формулы преобразования:
- Из Цельсия в Фаренгейт:
(C × 9/5) + 32 - Из Цельсия в Кельвин:
C + 273.15
Формат входных данных:
- Первая строка: Температуры в градусах Цельсия, разделенные запятыми (пример:
0,10,20,30,100) - Вторая строка: Целевая единица преобразования — либо
F, либоK(пример:F)
Ожидаемый результат: Каждая преобразованная температура выводится на отдельной строке, округленная до 2 знаков после запятой
Шпаргалка
Используйте пользовательские функции с array_map(), передавая имя функции в виде строки. Пользовательская функция должна принимать один параметр (текущий элемент массива) и возвращать преобразованное значение.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Результат: [2, 4, 6, 8, 10]
?>Этот подход обеспечивает полный контроль над обработкой элементов, позволяя выполнять сложные вычисления, манипуляции со строками или любую пользовательскую логику внутри вашей функции.
Попробуйте сами
<?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'Итоги: Обработка данных