以最快的方式将简单数组转换为键=>值数组


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
)
为此

使用它们没什么大不了的。但我更喜欢聪明的单行本。

尝试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);