PHP 数组怎么映射
咱们日常写代码时,肯定会遇到要把数组里的内容转成另一种格式的情况——比如把一串数字的单价,都乘以2变成总价,或者把用户列表里的“姓名”单独拎出来存成新数组。这种把一个数组的每个元素,按规则转换成新元素,最终生成新数组的操作,其实就是PHP里的“数组映射”。
啥是数组映射?拿买菜打比方就懂
你可以把数组映射理解成“给数组里的每个元素派一个专属小任务”,任务做完,就产出一个和原数组长度一样的新数组。举个生活化的例子:你去菜市场买3样菜,每样菜的价格是[3, 5, 2],你想把每样菜都加价1元卖,变成[4, 6, 3],这个“给每个数字加1”的动作,就是最基础的数组映射。

PHP里最常用的映射方法:array_map()
PHP专门给数组映射做了一个现成的工具函数array_map(),不用自己写循环一个个处理,省了好多事。它的用法很简单,只要记住两个核心部分就行:
- 映射规则:也就是你要给每个元素做什么操作,可以是普通的函数,甚至是自己写的小功能;
**要处理的原数组**:就是你想加工的那个数组。
比如刚才的买菜例子,用array_map()写出来就是:
`php
// 原数组是3样菜的价格
$prices = [3, 5, 2];
// 定义规则:每个数加1
function addOne($num) {
return $num + 1;
}
// 用array_map执行映射
$newPrices = array_map('addOne', $prices);
// 结果就是[4, 6, 3]
`
如果原数组是字符串,想转成大写也能用——比如把['苹果', '香蕉', '橙子']转成全大写,只要把规则换成'strtoupper'就行:
`php
$fruits = ['苹果', '香蕉', '橙子'];
$upperFruits = array_map('strtoupper', $fruits);
// 结果就是['苹果', '香蕉', '橙子'](中文转大写还是原字,英文会变全大写)
`
特殊情况:映射多个数组
有时候你可能要把两个数组对应位置的元素一起处理,比如把“菜名”和“单价”两个数组,对应拼起来成“菜名:单价元”的格式,这时候array_map()也能搞定,只要把多个数组都传进去就行。
比如原数组$names = ['青菜', '萝卜', '番茄'],$prices = [3, 2, 5],要拼出['青菜:3元', '萝卜:2元', '番茄:5元'],代码是这样的:
`php
$names = ['青菜', '萝卜', '番茄'];
$prices = [3, 2, 5];
function combine($name, $price) {
return "$name:$price元";
}
$combined = array_map('combine', $names, $prices);
`
这里要注意:多个数组的长度必须一样,不然array_map()会自动把短的那个数组补空,导致结果不对。
手写映射也可以,适合新手练手
要是想搞懂原理,也可以不用array_map(),自己用循环写映射。还是用刚才的买菜例子,写出来就是:
`php
$prices = [3, 5, 2];
$newPrices = [];
// 遍历原数组每个元素
foreach ($prices as $price) {
// 按规则加工后存进新数组
$newPrices[] = $price + 1;
}
`
这种写法虽然多写几行,但逻辑更直白,新手练手时用这个,能更清楚看到“逐个处理”的过程。
简单说,PHP数组映射就是按统一规则把一个数组变成另一个数组,array_map()是最省心的工具,要是想练基础,手写循环也完全没问题,日常写代码时按需选就行。