使用 'array_map' 转换
本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 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)。
读取两个输入,将以逗号分隔的价格转换为数字数组,使用内置的 floatval 函数进行转换,并使用 array_map() 为每个价格应用折扣百分比。根据折扣进行计算后,将每个折后价格单独输出一行,并四舍五入到小数点后 2 位。
计算折后价格的方法:将原价乘以 (100 - discount) / 100。
输入格式:
- 第一行:以逗号分隔的商品价格(例如:
19.99,25.50,12.75,8.00) - 第二行:表示折扣百分比的数字(例如:
15)
预期输出:每个折后价格单独输出一行,并四舍五入到小数点后 2 位(例如:16.99、21.68、10.84、6.80)
亲手试试
<?php
// 读取输入
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// 将用逗号分隔的价格转换为数组
$prices = explode(',', $prices_input);
// TODO:在下方编写你的代码
// 使用 array_map() 对每个价格应用折扣
// 将每个折后价格分别输出在单独一行
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: PHP 在线编译器