使用PHP for循环创建星型模式

时间:2013-03-04 20:48:58

标签: php loops for-loop

我正在尝试回应星星和零,如下面的模式

*
***0
******00
**********000

但是我得到了这个结果

    *
    **0
    ***00
    ****000
    *****0000
    ******00000

这是我的代码     

for ($i=0; $i<=10; $i++)
{   
    echo "*";
    for ($j=0; $j<$i; $j++)
    {   
       echo "*";

    }
        for ($z=0; $z<$i; $z++)
            {
                echo "0";
            }       
    echo "</br>";    
} 
?>

4 个答案:

答案 0 :(得分:6)

星号由三角形数字11+21+2+3表示。您想在每次迭代时将内循环最大值增加$i

$k = 0;
for ($i=1; $i<=10; $i++)
{
    $k += $i;
    for ($j=1; $j<=$k; $j++)
    {   
       echo "*";
    }
    ...
}

这也是一个很好的情况,你的循环应该用1而不是0初始化,因为它更直观。在使用数组时,基于0的循环效果最佳。

答案 1 :(得分:1)

我觉得这样的事情更有效率;你可以缓存当前的星和零序列。

$cache_star = "";
$cache_zero = "";
for ($i=1; $i<=10; $i++)
{
    for ($j=1; $j<=$i; $j++)
    {   
       $cache_star .= "*";
    }
    echo $cache_star.$cache_zero;
    $cache_zero .= "0";
}

答案 2 :(得分:0)

闻起来像家庭作业......但好吧,这是怎么回事:

$star = "*";

echo $star."\n";

    for ($i=0; $i<=10; $i++)
    {   
        $star = $star."**";
        echo $star;

        echo str_repeat("0", $i+1);

        echo "\n";    
    } 

结果:

*
***0
*****00
*******000
*********0000
***********00000
*************000000
***************0000000
*****************00000000
*******************000000000
*********************0000000000
***********************00000000000

演示:

http://sandbox.onlinephpfunctions.com/code/583644f782005adb9e018b965cbbdefaf63c7c79

答案 3 :(得分:0)

这是我得到的:

for($i = 1; $i != 5; $i++)
{
    $triangle = (0.5 * $i) * ($i + 1);
    echo str_repeat('*', $triangle) . str_repeat('0', $i) . PHP_EOL;
}

使用公式0.5n(n + 1) - 三角数公式。

示例输出:

*0
***00
******000
**********0000