Преобразование с помощью 'array_map'
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 39 из 68.
Функция array_map() — это мощный инструмент, который преобразует каждый элемент массива, применяя к нему функцию обратного вызова. В отличие от функций, которые изменяют исходный массив, array_map() создает и возвращает совершенно новый массив с преобразованными значениями.
Базовый синтаксис требует двух параметров: во-первых, функцию обратного вызова, которую вы хотите применить, и во-вторых, массив, который вы хотите преобразовать. В PHP есть много встроенных функций, которые отлично работают в качестве функций обратного вызова с array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Результат: ["ALICE", "BOB", "CHARLIE"]
?>В этом примере strtoupper применяется к каждому элементу массива $names. Исходный массив остается без изменений, в то время как $uppercaseNames содержит преобразованные результаты. Это делает array_map() идеальным выбором, когда вам нужно обработать данные, не теряя исходных значений.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоВы получите два входных значения: список цен на товары, разделенных запятыми, и процент скидки. Первый ввод содержит цены в виде строки в формате 19.99,25.50,12.75,8.00, а второй ввод — это процент скидки в виде числа (например: 15).
Прочитайте оба входных значения, преобразуйте цены, разделенные запятыми, в массив чисел, примените процент скидки к каждой цене, используя array_map() со встроенной функцией floatval для преобразования и расчетом скидки, и выведите каждую цену со скидкой на отдельной строке, округленную до 2 знаков после запятой.
Чтобы рассчитать цену со скидкой: умножьте исходную цену на (100 - discount) / 100.
Формат входных данных:
- Первая строка: Цены на товары через запятую (например:
19.99,25.50,12.75,8.00) - Вторая строка: Процент скидки в виде числа (например:
15)
Ожидаемый результат: Каждая цена со скидкой выводится на отдельной строке, округленная до 2 знаков после запятой (например: 16.99, 21.68, 10.84, 6.80)
Шпаргалка
Функция array_map() преобразует каждый элемент массива, применяя к нему функцию обратного вызова. Она создает и возвращает новый массив с преобразованными значениями, оставляя исходный массив без изменений.
Базовый синтаксис со встроенной функцией:
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Результат: ["ALICE", "BOB", "CHARLIE"]
?>Функция принимает два параметра: функцию обратного вызова и массив для преобразования. В качестве функций обратного вызова можно использовать встроенные функции PHP или анонимные функции.
Попробуйте сами
<?php
// Чтение входных данных
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Преобразование цен, разделенных запятыми, в массив
$prices = explode(',', $prices_input);
// TODO: Напишите свой код ниже
// Используйте array_map(), чтобы применить скидку к каждой цене
// Вывод каждой цены со скидкой на отдельной строке
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
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'Итоги: Обработка данных