1. foreach

这是最随意马虎想到的方法

2. array_map

phpforkeyvaluePHP中实现key value映射 CSS

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

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在处理多维数组时,更灵巧