需求: 把 $a 数组,用 'a' 字段的值,作为每个 value 的 key
代码语言:javascript
复制$a = [
[
'a' => 'av1',
'b' => 'bv1',
],
[
'a' => 'av2',
'b' => 'bv2',
],
[
'a' => 'av3',
'b' => 'bv3',
],
[
'a' => 'av4',
'b' => 'bv4',
],
[
'a' => 'av5',
'b' => 'bv5',
],
];
常规方案,万事不决 foreach
代码语言:javascript
复制function array_reset_by_foreach($array, $custom_key) {
$result = [];
foreach ($array as $key => $value) {
// todo 校验完整性,如 key 不存在怎么处理
$result[$value[$custom_key]] = $value;
}
return $result;
}
array_combine array_column
代码语言:javascript
复制function array_reset_by_array_combine($array, $custom_key) {
return array_combine(array_column($array, $custom_key), $array);
}
测试效率
代码语言:javascript
复制$num = 10000000;
$t_start = microtime(true);
for ($i = 0; $i < $num; $i ) {
array_reset_by_array_combine($a, 'a');
}
var_dump(microtime(true) - $t_start);
// float(4.1986689567566)
$t = microtime(true);
for ($i = 0; $i < $num; $i ) {
array_reset_by_foreach($a, 'a');
}
var_dump(microtime(true) - $t_start);
// float(5.4154398441315)