老师帮我分析下

老师帮我分析下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>慕课网</title>
</head>
<body>
<form action="#" method="post">
      <input type="text" name="num" placeholder="请输入要打印的行数">
<br/><button text="submit" name="button" value="pyramid">金字塔</button>
<button text="submit" name="button" value="rhombus">空心菱形</button>
</form>

<?php
    //接收用户提交的数据
     $num=$_POST['num'];
//
     if($_POST){
//
      if($_POST['button']=='pyramid'){
  //
        for($i=1;$i<=$num;$i++){
//
for($j=$i;$j<=$num;$j++){
echo '<span style="color:#FFF">*</span>';
}
    for($a=1;$a<=$i*2-1;$a++){
echo '*';
            }
echo '<br/>';
        }
  }
}
?>
</body>
</html>


第二个for循环还是不太懂,为什么生成一个倒三角,假设循环4次,不看十三个循环,为什么第二次for循环是4行*(用了样式看不到的*,),第一行是4个,第二行是3个,依次递减,这是怎么回事

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,因为第二个for循环外面还有一城=层for循环,比如num=12,所以第一次是循环为1到12,

如果是第二次循环为2到12,比如我们写出具体的$i值,如:

测试一下代码:

 if($_POST['button']=='pyramid'){
        for($i=1;$i<=$num;$i++){
            for($j=$i;$j<=$num;$j++){
                echo '<span style="color:red">'.$j.'</span>';
            }
//            for($a=1;$a<=$i*2-1;$a++){
//                echo '*';
//            }
            echo '<br/>';
        }
    }
}

http://img1.sycdn.imooc.com//climg/5c788cf50001995302970304.jpg

如果换成*则为:(从每行12个到每行一个一次递减),

http://img1.sycdn.imooc.com//climg/5c788d1f0001f4ad03390332.jpg

如果解决您的问题请采纳,祝学习愉快!





guly 2019-02-27 11:15:11

你好,

第二个for循环,输出白色*,实现一个倒的直角三角形,输出空白的话与等腰三角形会有误差,所以使用白色*代替。

第三for循环表示输出每一行的星星,第一行1个,第二行3,以此类推,公式为$i*2-1,如果解决您的问题请采纳,祝学习愉快!

  • 提问者 消除bug #1
    那为什么第二个for循环输出的是倒三角形呢
    2019-02-27 19:43:15
  • guly 回复 提问者 消除bug #2
    你好,第二个for循环其实可以输出为空,金字塔本省形状为等腰三角形,但是为了金字塔在使浏览器为标注等腰三角形,没有误差,所以以白色*好代替输出倒三角形,如果解决您的问题请采纳,祝学习愉快!
    2019-02-28 10:10:05
  • 提问者 消除bug 回复 guly #3
    这个我知道 我想知道第二个for循环$j++为什么输出的是依次递减的呢?老师能给我分析下吗??
    2019-02-28 18:44:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师