You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP打印星形图案出现异常结果,求原因分析

右对齐星号图案失效的原因与修复方案

嘿,这个问题我之前也踩过坑!你的代码逻辑本身是完全正确的,但为啥输出不对呢?根源在于浏览器对HTML中空格的处理规则——多个连续的普通空格会被自动合并成一个,所以你循环输出的那些缩进空格全被浏览器“吃掉”了,看起来就变成左对齐的星号了。

具体原因

HTML的默认渲染行为会把连续的空白字符(包括空格、制表符、换行)合并为单个空格。你原本想输出4个空格加1个星号,但浏览器只显示1个空格,自然就没法形成右对齐的效果了。

两种快速修复方法

方法1:用<pre>标签保留原始格式

<pre>标签的作用就是保留文本的原始排版,包括所有空格和换行。你只需要把整个输出包裹在这个标签里,同时把<br>换成普通的换行符\n(因为<pre>会识别换行):

echo "<pre>";
for($i=1; $i<=5; $i++){
    for($j=1; $j<=5; $j++){
        if($j>= (6-$i)){
            echo "*";
        } else {
            echo " ";
        }
    }
    echo "\n";
}
echo "</pre>";

方法2:用&nbsp;代替普通空格

&nbsp;是HTML的非换行空格,它不会被浏览器合并。把你代码里输出空格的地方换成&nbsp;就行:

for($i=1; $i<=5; $i++){
    for($j=1; $j<=5; $j++){
        if($j>= (6-$i)){
            echo "*";
        } else {
            echo "&nbsp;";
        }
    }
    echo "<br>";
}

修复后的效果

不管用哪种方法,你都能得到预期的右对齐图案:

*
   **
  ***
 ****
*****

内容的提问来源于stack exchange,提问作者Rakesh Kohali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:03:07