2016-12-14 114 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