Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP按值索引的顺序合并多个数组_Php_Arrays_Array Merge - Fatal编程技术网

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
谢谢,这样做非常好。在我的应用程序中,数组的长度始终相同:)