在PHP中打印没有嵌套循环的模式

时间:2015-09-15 15:31:55

标签: php regex loops nested controls

我的代码的输出应为:

*
**
***
****
*****

我目前正在使用带有嵌套for循环的代码来获取结果。

for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    for($starCount=1;$starCount<=$lineNumber;$starCount++)         {
            echo("*");
    }
        echo("<br />");
}

我需要能够在没有嵌套for循环的情况下获得相同的结果,而且我很难过。我唯一想要使用的是单个for循环。没有其他的。没有ifs,开关或其他循环。

谢谢!

3 个答案:

答案 0 :(得分:5)

$str = '';
for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    $str = $str . '*';
    echo $str;
    echo("<br />");
}

使用此字符串累加器不需要第二次循环。

答案 1 :(得分:2)

使用此:

for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    echo str_repeat("*",$lineNumber);
    echo("<br />");
}

答案 2 :(得分:0)

这些是绘制金字塔的一些示例:

function print($n)
{
    //example 1
    for ($x = 1; $x <= $n; $x++) {
        for ($y = 1; $y <= $x; $y++) {
            echo 'x';
        }
        echo "\n";
    }

    // example 2
    for ($x = 1; $x <= $n; $x++) {
        for ($y = $n; $y >= $x; $y--) {
            echo 'x';
        }
        echo "\n";
    }

    // example 3

    for($x = 0; $x < $n; $x++) {
        for($y = 0; $y < $n - $x; $y++) {
            echo ' ';
        }
        for($z = 0; $z < $x * 2 +1; $z++) {
            echo 'x';
        }
        echo "\n";
    }


}