新人求助,请问下面的代码,怎么改成 跟下图一样秩序的 php数字金字塔,谢谢,

<?php$str=0;$m=200;for($i=1;$i<=20;$i++){if($str>=$m){break;}for($b=20;$b>=$i;$b--){e... <?php$str=0;$m=200;for($i=1;$i<=20;$i++){ if($str>=$m) { break; } for ($b=20;$b>=$i;$b--){ echo " "; } for($a=1;$a<=$i;$a++) { $str++; echo "$str"." "; if($str>=$m) { break; } } echo "<br/>";}?> 展开
 我来答
百度网友2da2aea
2016-08-23 · TA获得超过470个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:392万
展开全部

要弄成完美的金字塔, 需要考虑到最大的数字是几位数, 来确定放几个空格, 另外html中的多个空格只显示一个空格, 需要转义成&nbsp;来代替空格。

<?php
$str = 0;
$m = 200;   //最大的数占3格, 可以直接定为3个数。
$num_len = 3;
$hang = 20; //显示行数
for($i = 1; $i <= $hang; $i ++){
    if($str >= $m){
        break;
    }
    //输出首数字前的空格
    for($b = $hang-$i-1; $b >= 0; $b--){
        echo "&ensp;&ensp;&ensp;";
    }

    //开始输出数字
    for($a = 1; $a <= $i; $a ++){
$true_str = '';
        $str ++;
        //长度不够, 补空格, 为了美观, 改成-
        switch (strlen($str)){
            case 1:
                $true_str = "-".$str."-";
                break;
            case 2:
                $true_str = $str."-";
                break;
            default:
                $true_str = $str;
                break;
        }
        
        echo "$true_str" . "&ensp;&ensp;&ensp;";
        if($str >= $m){
            break;
        }
    }
    echo "<br/>";
}
?>
追问

您发的输出的这样的,能改成完美三角形吗,谢谢您热心指教。

追答

最后少了个换行  <br>

<?php
$str = 0;
$m = 200;   //最大的数占3格, 可以直接定为3个数。
$num_len = 3;
$hang = 20;       //显示行数
for($i = 1; $i <= $hang; $i ++){
    if($str >= $m){
        break;
    }
    //输出首数字前的空格
    for($b = $hang-$i-1; $b >= 0; $b--){
        echo "&ensp;&ensp;&ensp;";
    }
     
    //开始输出数字
    for($a = 1; $a <= $i; $a ++){
        $true_str = '';
        $str ++;
        //长度不够, 补空格, 为了美观, 改成-
        switch (strlen($str)){
            case 1:
                $true_str = "-".$str."-";
                break;
            case 2:
                $true_str = $str."-";
                break;
            default:
                $true_str = $str;
                break;
        }
         
        echo "$true_str" . "&ensp;&ensp;&ensp;";
        if($str >= $m){
            break;
        }
    }
    echo "<br>";
}
?>
当十文
2016-08-23 · 超过27用户采纳过TA的回答
知道答主
回答量:140
采纳率:20%
帮助的人:49.8万
展开全部
for($i=10;$i>0;$i--){
for($v=11 - $i;$v>0;$v--){
echo "*";
}
echo "<br>";
}
追问
我需要的是 全部数字 显示, 显示效果是 等边三角形 那样的,您这个是直角,而且显示的是****
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式