PHP星号三角形对齐

时间:2012-11-19 01:21:58

标签: php

我是网络编程的新手,最近开始使用PHP。我写了一些代码来制作一个“直角三角形”。我认识到使用& nbsp是解决方案的一部分,但我把它放在每个可能没有运气的地方,所以任何建议都会被赞赏。下面你会发现编码/电流输出/所需输出:

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

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


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

4 个答案:

答案 0 :(得分:1)

这是我的建议;没有while s,但使用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。

答案 1 :(得分:0)

每行需要10个字符,n asterix和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;
}

答案 2 :(得分: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>标记。

答案 3 :(得分: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));
}
?>