1

私はWebプログラミングに不慣れで、最近PHPを使い始めました。「直角三角形」を作成するための小さなコードを書きました。&nbspを使用することが解決策の一部であることを認識していますが、運が悪ければ可能な限りすべての場所に配置したので、アドバイスをいただければ幸いです。以下に、コーディング/現在の出力/目的の出力を示します。

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

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


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

4 に答える 4

1

これが私の提案です。sはありませwhileんが、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;
}

元の三角形に、 sをecho切り替えるだけです。str_repeat()

于 2012-11-19T02:35:45.537 に答える
0

n1行、アステリックス、および10 - nスペースごとに10文字が必要です。これを知っていると、出力するスペースの数を制御するために、内部に別のループを追加する必要があります。

次のような単純なもの:

$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 に答える