1

我是网络编程新手,最近开始接触 PHP。我写了一个小代码来产生一个“直角三角形”。我认识到使用   是解决方案的一部分,但我已经把它放在了所有可能的地方,但没有运气,所以任何建议都将不胜感激。在下面你会找到编码/当前输出/所需输出:

$x = 10;
while ( $x >= 1 ) {
    $y=1;
    while ($y <= $x) {
        echo "*";
        ++$y;
    }
    echo "<br/>";
    --$x;
}

output:
**********
*********
********
*******
******
*****
****
***
**
*


desire output:
**********
 *********
  ********
   *******
    ******
     *****
      ****
       ***
        **
         *
4

4 回答 4

1

这是我的建议;没有whiles,但使用for循环(和str_repeat()s)。

echo '<pre>'; // just here for display formatting

// $x = current number of *
// $t = total number of positions
for( $x = $t = 10; $x > 0; $x-- )
{
    // repeat '&nbsp;' $t - $x times
    // repeat '*' $x times
    // append '<br>'
    echo str_repeat( '&nbsp;', $t - $x ) . str_repeat( '*', $x ) . '<br>';
}

带有一个while循环:

echo '<pre>'; // just here for display formatting

$x = $t = 10;
while( $x > 0 )
{
    echo str_repeat( '&nbsp;', $t - $x ) . str_repeat( '*', $x ) . '<br>';
    --$x;
}

echo你原来的三角形,只需切换str_repeat()s。

于 2012-11-19T02:35:45.537 回答
0

您需要每行 10 个字符、n星号和10 - n空格。知道了这一点,你只需要在里面再添加一个循环来控制输出多少空格!

像这样简单的东西:

$x = 10;
while ( $x >= 1 ) {
    $spaces = 1;
    while($spaces <= 10 - $x)
    {
        echo "&nbsp";
        ++$spaces;
    }
    $y=1;
    while ($y <= $x) {
        echo "*";
        ++$y;
    }
    echo "<br/>";
    --$x;
}
于 2012-11-19T01:24:42.620 回答
0
<?php

$num = 10;
$char = '*';
$string = str_repeat($char, $num);

for ($i = 1; $i <= $num; $i++)
{
    printf("%{$num}s\n", $string);
    $string = substr_replace($string, '', -1);
}

?>

<pre>如果您想轻松格式化,请使用标签。

于 2012-11-19T02:57:23.850 回答
0

我希望这段代码对你有帮助

call_user_func()使用和创建星形三角形的新代码for loop()

星三角

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

php代码

<?php
/**
  | Code for display star triangle using for loop 
  | date : 2016-june-10
  | @uther : Aman kumar
  */

$sum = "*";
for($i=0;$i<=5;$i++)
{
    call_user_func(function($sum) { echo $sum, "<br/>"; }, str_repeat($sum,$i));
}
?>
于 2016-06-09T19:19:13.037 回答