如何按此顺序打印数组?

时间:2016-12-14 20:32:37

标签: php arrays printing

大家好请帮助我有数组包含三个数组,每个数组包含不同数量的字符,第一个数组总是有更大量的字符然后第二个等等。请注意,两个连续数组可能具有相同数量的字符,请检查此示例

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;
            }
        }

2 个答案:

答案 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

尝试

答案 1 :(得分: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