PHP按其值索引的顺序合并多个数组

时间:2013-06-30 02:41:50

标签: php arrays array-merge

我发现了很多关于使用array_merge将数组连接在一起的信息,但是我想知道按照它们的值索引合并多个数组是多么容易,而不是简单地将它们连接在一起。 / p>

例如,如果我们有以下三个数组:

$a = array('One','Two','Three','Four');
$b = array(1,2,3,4);
$c = array('i','ii','iii','iv');

我们可以将它们合并到?:

One,1,i,Two,2,ii,Three,3,iii,Four,4,iv

而不是:

One, Two, Three, Four, 1, 2, 3, 4, i, ii, iii, iv

2 个答案:

答案 0 :(得分:2)

您可以像这样编写自定义函数。

$a = array('One','Two','Three','Four');
$b = array(1,2,3,4);
$c = array('i','ii','iii','iv');

$count = max(count($a), count($b), count($c));
$newarray = array();

for($i=0; $i < $count; $i++) {
   if (isset($a[$i])) $newarray[] = $a[$i];
   if (isset($b[$i])) $newarray[] = $b[$i];
   if (isset($c[$i])) $newarray[] = $c[$i];
}

var_dump($newarray);

答案 1 :(得分:2)

由于可读性,我实际上不会使用此代码,但它的工作原理很酷。

首先制作数组数组

$a = array('One','Two','Three','Four');
$b = array(1,2,3,4);
$c = array('i','ii','iii','iv');
$arrays = [$a, $b, $c];

然后

array_unshift($arrays, null);
$n = call_user_func_array('array_merge', call_user_func_array('array_map', $arrays));
print_r($n);

产量

Array
(
    [0] => One
    [1] => 1
    [2] => i
    [3] => Two
    [4] => 2
    [5] => ii
    [6] => Three
    [7] => 3
    [8] => iii
    [9] => Four
    [10] => 4
    [11] => iv
)

demo http://codepad.org/FdZKffPQ

它使用了这种矩阵转置方法https://stackoverflow.com/a/3423692