-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;";请解决这个问题。

  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中的递归解决方案。我将它包装在 <PRE> 标记中,以便可以使用空格和换行符“\n”。

<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 回答