我想转移
Array
(
[0] => name|smith
[1] => kid|tom
[2] => wife|emily
)
最快、最智能的方式进入
Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
为此使用它们没什么大不了的。但我更喜欢聪明的单行本。
尝试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()
时的版本)。
不是单行,而是...
<?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);