如何将关联数组展平为仅包含PHP值的数组?

aal*_*aap 3 php arrays function

我有一个具有键和值的数组.例如:

Array (
    [name] => aalaap
    [age] => 29
    [location] => mumbai
)
Run Code Online (Sandbox Code Playgroud)

我想将密钥从这里转换为值,但我希望值在密钥之后立即显示.例如:

Array (
    [0] => name
    [1] => aalaap
    [2] => age
    [3] => 29
    [4] => location
    [5] => mumbai
)
Run Code Online (Sandbox Code Playgroud)

我可以轻松编写一个迭代函数来执行此操作...例如:

array_flatten($arr) {
    foreach ($arr as $arrkey => $arrval) {
        $arr_new[] = $arrkey;
        $arr_new[] = $arrval;
    }
    return $arr_new;
} 
Run Code Online (Sandbox Code Playgroud)

...但我试图找出是否有任何方式这可以使用来实现array_combine,array_keys,array_values和/或array_merge在一个,最好的,所以我并不需要使用自定义功能.

在那儿?

小智 6

您自己的解决方案可能是最干净的解决方案,因此将其转换为"单线程":

$array = array('name' => 'aalaap','age' => 29, 'location' => 'mumbai');
$answer = array();

array_walk($array, create_function('$val,$key', 'global $answer; $answer[]=$key; $answer[]=$val;'));

var_dump($answer);
Run Code Online (Sandbox Code Playgroud)

这避免了不必要且昂贵的阵列复制或排序.

或者,失去全球:

array_walk($array, create_function('$val,$key,$result', '$result[]=$key; $result[]=$val;'), &$answer);
Run Code Online (Sandbox Code Playgroud)


coa*_*sap 6

Just Jules 答案的 PHP 5.3+ 版本,更具可读性:

array_walk($array, function($val, $key) use (&$answer) {
    $answer[] = $key;
    $answer[] = $val;
});
Run Code Online (Sandbox Code Playgroud)