2016-12-14 63 views
-1

你好傢伙請幫忙我有數組包含三個數組,每個數組包含不同數量的字符,第一個數組總是有更多的字符,然後第二個等等。請注意,兩個連續的陣列可以具有字符相同量的檢查這個例子如何按此順序打印數組數組?

array  //called lines 
(
['a','b','c','d'], 
['e','f','g'], 
['h','i'] 
); 

我試圖遍歷的主陣列,每次打印每個陣列的第一個字母,然後轉移出來,所以第一時間在陣列的我將從第一個數組中打印'a',並將它從數組中移出,然後移動到第二個數組並打印'e'並將其從數組中移出,移動到第三個並打印'h',然後返回並執行同樣的,直到所有的人都是空的我怎麼能做到這一點這裏的輸出應該看起來像「aehbficgd」什麼對不起,如果該問題太長,感謝

 while(!empty($lines)) 
     { 
      $counter = 0; 

      echo $lines[$counter][0]; 
      array_shift($lines[$counter]); 
      $counter++; 

      if($counter == count($lines)) 
      { 
       $counter = 0; 
      } 
     } 

回答

0

那這個呢?

$lines = array 
(
    ['a','b','c','d'], 
    ['e','f','g'], 
    ['h','i'] 
); 

$continue = true; 
while($continue) 
{ 
    $continue = false; 
    foreach($lines as $key => $line) { 
     if(!empty($line)) { 
      echo array_shift($line); 

      $lines[$key] = $line; 
      $continue = true; 
     } 
    } 
} 

你可以在這裏嘗試https://3v4l.org/TrcmA

+0

謝謝你工作(Y) – Mohammad

+0

哇,是的,兩個循環和三次代碼。 – AbraCadaver

0

兩個問題:

while(array_filter($lines)) { 
    $c = ($c != count($lines) - 1) ? $c + 1 : 0; 
    echo array_shift($lines[$c]); 
} 
  1. 過濾$lines因爲它將包含空數組中的元素,所以不會empty()
  2. 檢查count($lines) - 1,因爲你的最高密鑰是2,但是count()是3