如何从数组中获取所有键和所有值?

时间:2014-04-11 05:39:58

标签: php

我有一个数组

array('a' => 1, 'b' => 2, 'c' => 3)

我想要

array('a', 1, 'b', 2, 'c', 3)

我该怎么做?是否有可能不使用每个/循环?

5 个答案:

答案 0 :(得分:3)

使用foreach($ array作为$ key => $ value)然后将它们转储到新数组中。

答案 1 :(得分:3)

$a = array('a' => 1, 'b' => 2, 'c' => 3);
foreach($a as $k=>$v) {
 $b[] = $k;
 $b[] = $v;
}
print_r($b);
// output - Array ( [0] => a [1] => 1 [2] => b [3] => 2 [4] => c [5] => 3 ) 

答案 2 :(得分:2)

建议使用

foreach,但我不知道为什么在数组函数中需要它

我使用了array_walk而不是foreach

<?php
$arr=array('a' => 1, 'b' => 2, 'c' => 3);
$new_arr = array();
array_walk($arr,function ($v,$k) use (&$new_arr) { $new_arr[]=$k;$new_arr[]=$v;});
print_r($new_arr);

<强>输出

    Array
(
    [0] => a
    [1] => 1
    [2] => b
    [3] => 2
    [4] => c
    [5] => 3
)

答案 3 :(得分:2)

我认为,对于它来说,这是一个荒谬的单行(*):

$a = array('a' => 1, 'b' => 2, 'c' => 3);

$result = array_combine(range(0, count($a) * 2 - 1, 2), array_keys($a)) + array_combine(range(1, count($a) * 2, 2), array_values($a));
ksort($result);

print_r($result);

(*)它仍然需要ksort()作为单独的步骤。

更新

基于OP的评论,我意识到它可以更简洁(*)

$result = explode('=', http_build_query($a, '', '='));

(*)牺牲正确性

答案 4 :(得分:1)

如果你没有使用循环的话,这是一个例子:

$a = array('a' => 1, 'b' => 2, 'c' => 3);
$flip = array_flip($a);

$return = array_merge(array_values($a), array_values($flip));