PHP 数组怎么映射

咱们日常写代码时,肯定会遇到要把数组里的内容转成另一种格式的情况——比如把一串数字的单价,都乘以2变成总价,或者把用户列表里的“姓名”单独拎出来存成新数组。这种把一个数组的每个元素,按规则转换成新元素,最终生成新数组的操作,其实就是PHP里的“数组映射”。

啥是数组映射?拿买菜打比方就懂

你可以把数组映射理解成“给数组里的每个元素派一个专属小任务”,任务做完,就产出一个和原数组长度一样的新数组。举个生活化的例子:你去菜市场买3样菜,每样菜的价格是[3, 5, 2],你想把每样菜都加价1元卖,变成[4, 6, 3],这个“给每个数字加1”的动作,就是最基础的数组映射。

PHP 数组怎么映射

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()是最省心的工具,要是想练基础,手写循环也完全没问题,日常写代码时按需选就行。

上一篇 JavaScript 字符串怎么查找