牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP中实现key, value映射

创建时间:2017-11-23 投稿人: 18569028465 浏览次数:332

在做业务时,很多场景下比如品种数据时,会有这种需求,实现方式有很多,这里介绍常用的三种。

1. foreach

这是最容易想到的方法

2. array_map

将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,也可以实现

3. array_column

将二维数组转为一维数组

Demo Test

假设有如下数组结构:

$userInfo = array(

array(

"id" => 5698,

"first_name" => "Bill",

"last_name" => "Gates",

),

array(

"id" => 4767,

"first_name" => "Steve",

"last_name" => "Jobs",

),

array(

"id" => 3809,

"first_name" => "Mark",

"last_name" => "Zuckerberg",

)

);

现在需求是获取以id为key,first_name为value的数组,以下是三种实现:

$temp = [];

foreach($userInfo as $user){

$temp[$user["id"]] = $user["first_name"];

}

$tempM =[];

array_map(function($user) use (&$tempM) {

$tempM[$user["id"]] = $user["first_name"];

}, $userInfo);

$tempN = [];

$tempN = array_column($userInfo, "first_name", "id");

其结果都是:

array(3) {

[5698]=> string(4) "Bill"

[4767]=> string(5) "Steve"

[3809]=> string(4) "Mark"

}

最后

1. 从效率上来说:foreach与array_column速率在一个数量级上,基本相同,array_map要比其他两个慢一个数量级

2. 从灵活度来说:foreach在处理多维数组时,更灵活

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。