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