-4
        1 
      1 2 1 
    1 2 3 2 1 
      1 2 1 
        1 

$newline = "\r\n";
 $prnt = '*';
 $nos = 3;
 for($i = 1; $i <= 2; $i++)
 { 
    for($s = $nos; $s >= 1; $s--)
    {
        echo "&nbsp;";echo "&nbsp;";echo "&nbsp;";
    }
    for($j = 1; $j <= $i; $j++)
    {
        echo $j;echo "&nbsp;";
    }
    $m = 2; 
    for($k = 1; $k <= ($i - 1); $k++)
    {  
            echo $k;echo "&nbsp;";


    }  

    echo '<br />';
    $nos--;
    }
    $nos = 1;

    for($i = 3; $i >= 1; $i--)
    {
      for ($s = $nos; $s >= 1; $s--) {
       echo "&nbsp;";echo "&nbsp;";echo "&nbsp;";
    }
    for($j = 1; $j <= $i; $j++)
    {
        echo $j;echo "&nbsp;";
    }
    for($k = 1; $k <= ($i - 1); $k++)
    {
        echo $k;echo "&nbsp;";
    }
  $nos++;
  echo '<br />';//printf("\n");

 }

私は出力を得ました

        1 
      1 2 1 
    1 2 3 1 2 
      1 2 1 
        1 
  1. 使用時にスペースを印刷できないecho ' ';ので使用 echo "&nbsp;";しましたが、使用したくありませんecho "&nbsp;";plz はこの問題を解決します。

  2. 上記のプログラムの作成に問題がありますが、値が欠落している場合は、そこに何らかの条件を適用する必要がある場合があります。私のコードを見てください。

4

2 に答える 2

2

ストレート HTML で複数のスペースを印刷することは、レンダリング方法の関係で許可されていません。

空白を含めて正確に印刷したい場合は、コードを<pre/>タグで囲むだけです。

<pre>Spacing    will be    literal.</pre>

white-space CSSプロパティを に設定してフォーマットすることもできますpre

.spaces {
    white-space: pre;
}

<div class="spaces">Spacing    will be    literal.</div>
于 2013-07-30T13:50:33.053 に答える
0

これは楽しい小さなアルゴリズムです。PHP での再帰的なソリューションを次に示します。スペースと改行 "\n" を使用できるように <PRE> タグで囲みます。

<pre>
<?php
function printPyramid($height) {
    // initialize
    $size = ($height * 2) - 1;
    $half = $size / 2;
    $arr = Array();
    for($r = 0; $r < $size; $r++) {
        $arr[] = array();
        for($c = 0; $c < $size; $c++) {
            $arr[$r][] = "";
        }
    }
    $arr[$half][$half] = $height;
    // recursively build, pass array as reference "&"
    pyramidRec($arr, $half, $half, $size);
    // print
    for($r = 0; $r < $size; $r++) {
        for($c = 0; $c < $size; $c++) {
            if(empty($arr[$r][$c]))
                echo "  ";
            else if(strlen($arr[$r][$c]) == 1)
                echo "{$arr[$r][$c]} ";
            else
                echo $arr[$r][$c];
        }
        echo "\n";
    }    
}
function pyramidRec(&$arr, $r, $c, $size) {
    $val = $arr[$r][$c];
    $newVal = $val - 1;
    if($newVal == 0)
        return;
    // up
    if($r - 1 >= 0 && empty($arr[$r-1][$c])) {
        $arr[$r-1][$c] = $newVal;
        pyramidRec($arr, $r-1, $c, $size);
    }
    // down
    if($r + 1 < $size && empty($arr[$r+1][$c])) {
        $arr[$r+1][$c] = $newVal;
        pyramidRec($arr, $r+1, $c, $size);
    }  
    // left
    if($c - 1 >= 0 && empty($arr[$r][$c-1])) {
        $arr[$r][$c-1] = $newVal;
        pyramidRec($arr, $r, $c-1, $size);
    }
    // right
    if($c + 1 < $size && empty($arr[$r][$c+1])) {
        $arr[$r][$c+1] = $newVal;
        pyramidRec($arr, $r, $c+1, $size);
    }      
}

printPyramid(5);
?>
</pre>
于 2013-07-30T14:43:19.540 に答える