0

我可以使用 ASCII 艺术金字塔绘制金字塔,代码如下:

<center>
<?php 

$number = 10;

for($i=0;$i<$number;$i++)
{
    for($a=0;$a<$number-$i;$a++)
    {
        echo $i;
    }
    echo '<br/>';
}
?>
</center>

但是如果我设置$number为大于 9 的值(例如 10),这将不再起作用,因为 10 是由两个字符组成的。因此,如果该数字由两个字符组成,并且本来要打印n几次,则应该只打印 n/2 次。

但是我不知道该怎么做,你能帮我写吗?

样本输出:

金字塔

4

2 回答 2

0
<style type="text/css">
    div {
        width: 20px;
        display: inline-block;
    }
</style>

<center>
    <?php

    $number = 20;

    for ($i = 0; $i < $number; $i++) {
        for ($a = 0; $a < $number - $i; $a++) {
            echo '<div>' . $i . '</div>';
        }
        echo '<br/>';
    }
    ?>
</center>

或者

<center>
    <?php

    $number = 20;

    for ($i = 0; $i < $number; $i++) {
        if ($i > 9) {
            $j = $i + round($i / 2);
        } else {
            $j = $i;
        }
        for ($a = 0; $a < $number - $j; $a++) {
            echo $i;
        }
        echo '<br/>';
    }
    ?>
</center>
于 2013-03-03T13:16:52.693 回答
-1

我只是在练习 PHP,为了扩展我的 PHP 知识,我来到这里发现了这个问题。虽然是1年前。但我找到了一个解决方案。所以,我认为解决这个问题会很容易。

for ($row=0; $row <= 9; $row++) {

for ($space=1; $space <= $row; $space++) {      
    echo "&nbsp;";
}

for ($col=$row; $col < 10; $col++) { 
    echo $row . " ";
}
echo "<br>";    

}

输出是

在此处输入图像描述

于 2014-12-26T03:30:52.900 回答