如何每次减1时回复星形字符

时间:2013-02-04 10:51:50

标签: php loops

这是什么尝试

***
**
*

我这样做:

<?php
    $val = '*';
    for($i=1; $i<=3; $i++) {
            if($i == 1) {
                echo '***<br>';
            } elseif($i == 2) {
                echo '**<br>';
            } elseif($i == 3) {
                echo '*';
        }
    }
?>

现在我确定这是一种驴子方式......我想我需要在for循环中使用while循环但是不知道怎么做..

7 个答案:

答案 0 :(得分:2)

<?php

for($i=3;$i>0;$i--)
{
echo str_pad("*", $i,"*");
echo "<br>";
}

?>

答案 1 :(得分:2)

你去了:

function stringTree($val = '*', $k = 3) {
    for($i = $k; $i > 0; $i--) {
            echo str_repeat($val, $i).'<br>';
        }
    }
}

然后根据您的具体示例,您可以致电:

stringTree('*', 3);

将输出:

***
**
*

或继续前进,使其更大;例如:

stringTree('*', 6);

将输出:

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

或轻易改变角色:

stringTree('.', 4);

将输出:

....
...
..
.

答案 2 :(得分:1)

使用str_repeat

str_repeat('*', 4-$i)

整个代码:

<?php
$val = '*';
for($i=1; $i<=3; $i++) {
    echo str_repeat($val, 4-$i) . '<br/>';
}
?>

答案 3 :(得分:1)

for ($counter = 1; $counter <= 10; $counter++)
{
    // display star, counter number of times
    for ($star_counter = 1; $star_counter <= $counter; $star_counter++)
    {
        echo "*";
    }
    echo "<br/>";
}

答案 4 :(得分:1)

<?php
    $val = '***';
    while($val != '')
        echo $val . '<br/>';
        $val = substr($val, 0, -1);
    }
?>

这可以让你从任意数量的星星开始,不需要内循环。

答案 5 :(得分:1)

我将解释一种可以理解的方式,

   $val = '*'; // Your star
    $count= 3; // Number of lines
    for($i=0; $i<$count; $i++) {
            $num= $count-$i; //number of lines to come
            for($j=0; $j<$num; $j++) {
            echo "*";
    }
    echo "<br />";
    }

Out put

***
**
*

Test Here

答案 6 :(得分:1)

强制性的1-liner,有很多方法可以做到这一点。

for($i=3; $i; print str_repeat("*", $i--) . '<br />');

为了好玩:https://codegolf.stackexchange.com/questions/4114/print-a-christmas-tree/6783#6783