2013-09-01 2 views
3

Представьте себе несколько массив структур (я представляю три, но я хотел бы быть как можно более гибкими)Объединение нескольких массивов равномерно и непрерывно

$array1 = array("red", "red", "red"); 

$array2 = array("green", "green", "green", "green"); 

$array3 = array("blue", "blue"); 

Мне нужно объединить эти массивы вместе и имеет структуру как так:

Array 
(
    [0] => red 
    [1] => green 
    [2] => blue 
    [3] => red 
    [4] => green 
    [5] => blue 
    [6] => red 
    [7] => green 
    [8] => green 
) 

идея заключается в том, чтобы перебрать все массивы и объединить элементы один за другим, если любой из массивов Закончился элементы, цикл должен продолжаться в обычном режиме, я не уверен, если я Я объясняю себя лучшим здесь

ответ

1

с помощью счетчика, array_push и петлю на подсчетов

<?php 
$array1 = array("red", "red", "red"); 

$array2 = array("green", "green", "green", "green"); 

$array3 = array("blue", "blue"); 
$ArrayLength = array(count($array1),count($array2),count($array3)); 
$Arrays= array ($array1,$array2,$array3); 


$MergeArray=array(); 
$flag=true; 
for($i=0;$flag==true;$i++) 
{ 
    $flag=false; 
    for($j=0;$j < count($ArrayLength) ; j++) 
    {  
     if($i < $ArrayLength[$j]) 
     { 
      array_push($MergeArray , $Arrays[$j][$i]); 
      $flag=true; 
     } 
    } 
} 
Print_r( $MergeArray); 
?> 
+0

Это прекрасно работает! –

0

Я хотел бы попробовать что-то вроде:

$result = array(); 

$array1 = array("red", "red", "red"); 

$array2 = array("green", "green", "green", "green"); 

$array3 = array("blue", "blue"); 

$arrays = array($array1, $array2, $array3); 

$largest = 0; 

//Get the largest array 
foreach($arrays as $arr): 
    if(count($arr) > $largest) 
     $largest = $count; 
endforeach; 

$current = 0; 

while($current <= $largest): 
    foreach($arrays as $arr): 

     if(count($arr)>0 && $value = array_pop($arr)) 
      $result[] = $value; 
    endforeach; 
endwhile; 

Однако это, вероятно, может быть переработан, чтобы быть более эффективным

Смежные вопросы