我发现了很多关于使用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
答案 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