1

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

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

$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
4

2 回答 2

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);
于 2013-06-30T02:56:41.163 回答
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
)

演示http://codepad.org/FdZKffPQ

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

于 2013-06-30T03:33:16.737 回答