如何在PHP中制作反向金字塔程序?

时间:2013-12-14 07:03:51

标签: php loops

我正在尝试用PHP创建金字塔程序:

5
45
345
2345
12345

我试过了:

for($i=1;$i<=5;$i++)
{
for($j=1;$j<=$i;$j++)
{
    echo $j;
}
echo "<br>";
}

但它正在创建一个这样的金字塔:

1
12
123
1234
12345

我在过去的6个小时内尝试过这个但是无法做到这一点。任何人都可以帮助我这样做。

提前致谢

3 个答案:

答案 0 :(得分:2)

for($i=0;$i<5;$i++)
{
for($j=5-$i;$j<=5;$j++)
{
    echo $j;
}
echo "<br>";
}

或:

for($i=5;$i>=1;$i-)
{
for($j=$i;$j<=5;$j++)
{
    echo $j;
}
echo "<br>";
}

答案 1 :(得分:1)

这非常简单:

$max = 5;

echo "<pre>";

for($line=0; $line<$max; $line++) {
    $min_this_line = $max-$line;
    for($num = $min_this_line; $num <= $max; $num++) {
        echo $num;
    }
    echo "\n";
}

echo "</pre>";

输出:

5
45
345
2345
12345

答案 2 :(得分:0)

我想我会声明$peak的值,然后使用for()循环将计数器递减为1,然后使用implode()range()来构建各自的循环中的字符串。

这不会胜过两个for()循环,但是对于相对较小的$peak值,没有人会注意到任何性能下降。

代码:(Demo

$peak = 5;

for ($i = $peak; $i; --$i) {
    echo implode(range($i, $peak)) , "\n";
}

或具有两个循环:(Demo

减少外循环并增加内循环。

$peak = 5;

for ($i = $peak; $i; --$i) {
    for ($n = $i; $n <= $peak; ++$n) {
        echo $n;
    }
    echo "\n";
}

两个输出:

5
45
345
2345
12345