Menu
Coddy logo textTech

'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() невероятно универсальным инструментом для задач по преобразованию данных.

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

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

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

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

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

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

challenge icon

Задание

Легко

Вы получите два входных значения: список температур в градусах Цельсия, разделенных запятыми, и целевую единицу измерения для преобразования (либо 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 знаков после запятой

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

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

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