PHP按值索引的顺序合并多个数组
我已经找到了很多关于使用PHP按值索引的顺序合并多个数组,php,arrays,array-merge,Php,Arrays,Array Merge,我已经找到了很多关于使用array\u 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
array\u 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
您可以这样编写自定义函数
$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);
$a=数组('1'、'2'、'3'、'4');
$b=数组(1,2,3,4);
$c=数组('i'、'ii'、'iii'、'iv');
$count=max(count($a)、count($b)、count($c));
$newarray=array();
对于($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];
}
变量转储($newarray);
您可以这样编写自定义函数
$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);
$a=数组('1'、'2'、'3'、'4');
$b=数组(1,2,3,4);
$c=数组('i'、'ii'、'iii'、'iv');
$count=最大值(count($a)、count($b)、count($c));
$newarray=array();
对于($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];
}
变量转储($newarray);
由于可读性,我不会实际使用这段代码,但它能工作很酷
首先制作一个数组
$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
)
演示
它使用了这个矩阵转置方法由于可读性,我实际上不会使用这个代码,但它工作起来很酷 首先制作一个数组
$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
)
演示
它使用了这个矩阵转置方法我认为没有内置函数,只需为循环编写一个
。目的是什么?您将不得不创建自己的自定义合并函数我认为没有内置函数,只需为
循环编写一个。目的是什么?您必须创建自己的自定义合并函数。这假定所有数组的长度相同。最好是这样做:$count=max(count($a),count($b),count($c))
然后对每个数组执行isset()
,然后再尝试将索引添加到$newarray
谢谢,这样做非常好。在我的应用程序中,数组的长度始终相同:)这假设所有数组的长度都相同。最好是这样做:$count=max(count($a),count($b),count($c))然后对每个数组执行isset()
,然后再尝试将索引添加到$newarray
谢谢,这样做非常好。在我的应用程序中,数组的长度始终相同:)