我想转移
Array
(
[0] => name|smith
[1] => kid|tom
[2] => wife|emily
)
最快捷,最明智的方式
Array
(
[name] => smith
[kid] => tom
[wife] => emily
)
使用foreach并不是什么大不了的事。但我更喜欢聪明的单行。
答案 0 :(得分:1)
尝试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
)
答案 1 :(得分:1)
有一种方法可以给猫皮肤。
使用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()
时的版本)。
答案 2 :(得分:0)
不是单行,但是......
<?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);