合并数组的相同索引

时间:2018-09-17 14:04:40

标签: php arrays

我有一个数组,例如作为动态嵌套索引我只是使用2个嵌套索引。

Array
(
    [0] => Array
        (
            [0] => 41373
            [1] => 41371
            [2] => 41369
            [3] => 41370
        )

    [1] => Array
        (
            [0] => 41378
            [1] => 41377
            [2] => 41376
            [3] => 41375
        )


)

现在,我想创建一个像下面的单个数组。这将具有第一个数组的第一个索引,然后是第二个数组的第一个索引,第一个数组的第二个索引,然后是第二个数组的第二个索引,依此类推。见下文

array(

    [0] =>41373
    [1] => 41378
    [2] => 41371
    [3] => 41377
    [4] => 41369
    [5] => 41376
    [6] => 41370
    [7] => 41375
  ) 

5 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

$results = [];
$array = [[1,2,3,4], [1,2,3,4], [1,2,3,4]];
$count = 1;
$size = count($array)-1;
foreach ($array[0] as $key => $value)
{
    $results[] = $value;
    while($count <=  $size)
    {
        $results[] = $array[$count][$key];
        $count++;
    }
    $count = 1;
}

答案 1 :(得分:0)

我认为您需要这样的东西:

function dd(array $arrays): array
{
    $bufferArray = [];
    foreach($arrays as $array) {
        $bufferArray = array_merge_recursive($bufferArray, $array);
    }

    return $bufferArray;
}

答案 2 :(得分:0)

$array1 = ['41373','41371','41369','41370'];
$array2 = ['41378','41377', '41376', '41375'];

$return = array();
$count = count($array1)+count($array2);
for($i=0;$i<($count);$i++){
    if($i%2==1){
        array_push($return, array_shift($array1));
    }
    else {
        array_push($return, array_shift($array2));
    }
}


print_r($return);

答案 3 :(得分:0)

首先计算给定数组中的数组,然后计算第一个数组中的元素,然后循环遍历。所有数组的长度都应该相同,或者第一个数组应该最长。

$laArray   = [
        ['41373','41371','41369','41370'],
        ['41378', '41377', '41376', '41375'],
        ['43378', '43377', '43376', '43375'],
    ];

$lnNested   = count($laArray);
$lnElements = count($laArray[0]);
$laResult   = []; 

for($lnOuter = 0;$lnOuter < $lnElements; $lnOuter++) {
    for($lnInner = 0; $lnInner < $lnNested; $lnInner++) {
        if(isset($laArray[$lnInner][$lnOuter])) {
            $laResult[] = $laArray[$lnInner][$lnOuter];
        }
    }
}

答案 4 :(得分:0)

这将是最简单的解决方案:

$firstarr = ['41373','41371','41369','41370'];
$secondarr = ['41378','41377','41376','41375'];
$allcounged = count($firstarr)+count($secondarr);
$dividedintotwo = $allcounged/2;
$i = 0;
while ($i<$dividedintotwo) {
echo $firstarr[$i]."<br>";
echo $secondarr[$i]."<br>";
$i++;
}