以最快的方式将简单数组转换为键=>值数组
Translate simple array into key=>value array the fastest way
我要转让
Array
(
[0] => name|smith
[1] => kid|tom
[2] => wife|emily
)
进入
的最快、最聪明的方法
Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
为此使用 foreach 没什么大不了的。但我更喜欢智能单线。
不是单线,而是...
<?php
$a = array(
'name|smith',
'kid|tom',
'wife|emily',
);
$a2 = array();
foreach($a AS $val) {
list($key, $value) = explode("|", $val);
$a2[$key] = $value;
}
print_r($a);
print_r($a2);
尝试array_walk函数:
$a = array
(
0 => 'name|smith',
1 => 'kid|tom',
2 => 'wife|emily'
);
$new_arr = array();
array_walk($a, function($v, $k) use(&$new_arr){
$arr = explode('|', $v);
$new_arr[$arr[0]] = $arr[1];
});
print_r($new_arr);
输出
Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
给猫剥皮的方法不止一种。
使用array_reduce()
(但不是在一行中):
$result = array_reduce(
$a,
function (array $carry, $item) {
list($key, $value) = explode('|', $item);
$carry[$key] = $value;
return $carry;
},
array()
);
以及单行解决方案:
array_column(array_map(function($item) { return explode('|', $item); }, $a), 1, 0)
请注意,它需要PHP 5.5(这是引入功能array_column()
时的版本)。
我要转让
Array
(
[0] => name|smith
[1] => kid|tom
[2] => wife|emily
)
进入
的最快、最聪明的方法Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
为此使用 foreach 没什么大不了的。但我更喜欢智能单线。
不是单线,而是...
<?php
$a = array(
'name|smith',
'kid|tom',
'wife|emily',
);
$a2 = array();
foreach($a AS $val) {
list($key, $value) = explode("|", $val);
$a2[$key] = $value;
}
print_r($a);
print_r($a2);
尝试array_walk函数:
$a = array
(
0 => 'name|smith',
1 => 'kid|tom',
2 => 'wife|emily'
);
$new_arr = array();
array_walk($a, function($v, $k) use(&$new_arr){
$arr = explode('|', $v);
$new_arr[$arr[0]] = $arr[1];
});
print_r($new_arr);
输出
Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
给猫剥皮的方法不止一种。
使用array_reduce()
(但不是在一行中):
$result = array_reduce(
$a,
function (array $carry, $item) {
list($key, $value) = explode('|', $item);
$carry[$key] = $value;
return $carry;
},
array()
);
以及单行解决方案:
array_column(array_map(function($item) { return explode('|', $item); }, $a), 1, 0)
请注意,它需要PHP 5.5(这是引入功能array_column()
时的版本)。