Maison  >  Article  >  développement back-end  >  帮忙解释两个for循环

帮忙解释两个for循环

WBOY
WBOYoriginal
2016-06-23 13:50:221498parcourir

各位大大,这是一个用*输出倒直角三角形的例子,这两个for循环我不是很白,特别是里面的那个,能解释下么,谢谢啦~

    for($i=1;$i<15;$i++){        for($j=$i;$j<15;$j++){            echo "*";        }       echo "<br>";    }


回复讨论(解决方案)

为什么还要有个变量$j去等于外层的变量$i,再次循环一遍呢?

你首先理解下单个发for循环含义!如果里面不再做一次循环就不会出现3角了,而是竖着的14个*

$j = $i;//是让内层循环的起始值等于外层的值//每次都少输出一个*//外层第一次循环,内层输出14个*//外层第二次循环,内层输出13个*//以此类推只到循环结束

$j = $i;
关于这两个变量,我这样说看你能不能理解。
$i代表的是行数,即第一次循环代表第一行,依次类推,一共十五行。
$j代表的是列数,即每一行有多少列。

把代码稍改动下,输出一个矩形,帮助你理解。改动的地儿:$j=1。

<?php for($i=1;$i<15;$i++){        for($j=1;$j<15;$j++){             echo "*";        }       echo "<br>";    }?> 

理解for循环
其实可以输出四种直角三角形

$i 可以看做是行, $j可以看做是列
首先看 $i =1;的时候$j =1; j 然后看 $i =2;的时候$j=2;j …………
一次循环,最后得到第一行14个*,共14行,最后一行一个*,不知是否清楚.

多练练九九乘法表的输出和菱形的输出

这个我都能理解唉,i=1的时候 第二个for循环1

$i控制执行的行数。
$j控制每一行输出的*数。
很好理解啊。

因为从第一行开始,你的星号个数就要递减,知道了规律,你再结合代码就容易理解了。其实代码还可以这样写。

for($i=1;$i<15;$i++){        for($j=0;$j<15-$i;$j++){             echo "*";        }       echo "<br>";    }

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn