Menu
CoddyTech

使用自定义函数调用 'array_map'

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 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() 非常适合数据转换任务。

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 位小数

亲手试试

<?php
// 读取以逗号分隔的温度值
$temperatures = fgets(STDIN);

// 读取目标单位(F 或 K)
$unit = trim(fgets(STDIN));

// 将以逗号分隔的字符串转换为数字数组
$tempArray = explode(',', trim($temperatures));

// TODO: 在下方编写你的代码
// 创建自定义函数,将摄氏温度转换为目标单位
// 使用 array_map() 转换所有温度值
// 每行输出一个转换后的温度值,保留 2 位小数

?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: PHP 在线编译器