Menu
Coddy logo textTech

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

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

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

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

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

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

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

challenge icon

Задание

Легко

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


// Вывод каждой цены со скидкой на отдельной строке

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

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

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