3

我是 PHP 的新手,我正在制作一个程序,该程序将在右侧显示带有哈希的半金字塔。现在我的金字塔显示在左侧。这是我的代码下方。

代码

<form method="post">
 Height: <input type="number" name="height"/> 
</form>
<?php 
$height=$_POST['height'];
if($height <= 0){echo "Please write Positive Number";}
 $spacing=$height -1; 
 $hashes=2; 

for ($i=0; $i<$height; $i++) 
{ 
    for ($j=$spacing; $j>0; $j--) 
    { 
        echo " "; 
    } 
    for ($k=0; $k<$hashes; $k++) 
    { 
       echo "#"; 
    } 
    $spacing--; 
    $hashes ++; 
    echo "<br/>"; 

}

  ?>

上述代码的结果如果高度为 8。

##
###
####
#####
######
#######
########
#########

但我需要我在下面显示的这个结果。

        ##
       ###
      ####
     #####
    ######
   #######
  ########
 #########

任何人都知道如何在左侧分配空格,例如在上面的示例中显示我想要的。其他我不需要 Css 来控制这个问题我想用循环来处理这个思考。

4

5 回答 5

1

您可以使用此代码而不是整个for循环:

for ($i = 1; $i <= $height; $i++)
    echo str_replace(' ', '&nbsp;', str_pad(str_repeat('#', $i), $height, ' ', STR_PAD_LEFT)) . '<br/>';
于 2013-09-21T22:55:33.097 回答
1

用这个 :

for ($i=0; $i<$height; $i++) 
{ 
    for ($j=$spacing; $j>0; $j--) 
    { 
        echo "&nbsp;&nbsp;"; 
    } 
    for ($k=0; $k<$hashes; $k++) 
    { 
        echo "#"; 
    } 
    $spacing--; 
    $hashes ++; 
   echo "<br/>"; 

}

&nbsp;是 HTML 中的不间断空格。HTML 会忽略空格,这就是我们&nbsp;用来插入多个空格的原因。

于 2013-09-21T22:31:26.993 回答
0
<?php
print '<pre>';
for ($i=1; $i<= 10; $i++) {
  print str_repeat('#', $i).'<br />';
}

for ($i=1; $i<= 10; $i++) {
  print str_repeat('&nbsp;', 10-$i).str_repeat('#', $i).'<br />';
}
print '</pre>';
?>
于 2013-09-21T22:37:15.053 回答
0

这是另一个解决方案:

$height = abs($_POST['height']);

// the number of characters in each row of the shape
$width = $height + 1;

// one iteration creates one row
for($i = 0; $i < $height; $i++) {

    // the number of # symbols at the end of the row
    $hashes = $i + 2;

    // we know the width and the number of hashes, so space the difference
    echo str_repeat('&nbsp;', $width - $hashes);

    // and finally output the hashes
    echo str_repeat('#', $hashes);

    echo '<br/>';
}
于 2013-09-21T22:37:17.733 回答
0

您遇到的问题是 html 问题,而不是 php 问题。(您的代码是正确的。)浏览器只显示一个空格字符并丢弃任何后续字符。

要么将整个 php 输出包装在<pre>标签中,要么必须输出&nbsp;而不是空格(如果使用等宽字体,这只是一个足够的解决方案。)

于 2013-09-21T22:32:25.857 回答