使用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:用 代替普通空格
是HTML的非换行空格,它不会被浏览器合并。把你代码里输出空格的地方换成 就行:
for($i=1; $i<=5; $i++){ for($j=1; $j<=5; $j++){ if($j>= (6-$i)){ echo "*"; } else { echo " "; } } echo "<br>"; }
修复后的效果
不管用哪种方法,你都能得到预期的右对齐图案:
* ** *** **** *****
内容的提问来源于stack exchange,提问作者Rakesh Kohali
相关产品推荐
相关产品推荐

