您的位置:

在php中嵌套循环和语句,循环结构的嵌套语句怎么执行

本文目录一览:

关于PHP的for循环嵌套问题,需要讲详细点(请高手们仔细看题)

第一个:

for($i=1;$i=9;$i++){

echo $j,' '; //第一次进来,$j 未定义,所以警告

for($j=1;$j=$i;$j++){ //进到这来,$j =1 已定义的$j 且$j ++ $j这成了2 ,之后类似

}

}

第二个:

for($i=1;$i=9;$i++){

for($j=1;$j=$i;$j++){

} //执行完内层for循环,$j=1 然后$j++ 这成2,之后类似

echo $j,' ';

echo'br/';

}

第三个:

for($i=1;$i=9;$i++){

//echo $i,'......';

for($j=1;$j=$i;$j++){

echo $j,' '; //$j 在内层for中输出,由于内层的$i从1递增到9,$j输出的个数就是$i,$j 每次递增1 所以就输出你那的结果

}

}

for($j=1;$j=$i;$j++){ for循环 先定义变量$j=1,然后判断$j=$i是还否为真,为真则执行{}的内容,执行完在执行$j++,在判断$j=$i, 直到判断为假时退出。

PHP的for循环嵌套问题,高手请进(需要讲一些细节)

for循环的执行原理:

for循环的参数有(初始值;判断条件;更新循环变量表达式) 三者均不是必须的,若三者不完整则必须在适当的时候手动调用break命令终止循环,否则循环将一直持续下去成为死循环

执行过程为:

首先判断初始值是否满足判断条件,如满足则开始循环,若不满足则直接跳过循环因此如下的循环是不会被执行的:

for($i=0; $i0; $i++)

然后执行一次循环体(包裹在for后面大括号里的代码)

使用更新循环变量表达式更新变量

使用判断条件进行判断,若不满足则终止循环,若满足则再次执行循环体

因此如下循环会被执行5次

for($i=0; $i5; $i++)

for循环嵌套:

for循环嵌套的话将优先执行内循环,再执行外循环,如下:

//外循环开始

for($i=0; $i10; $i++)

{

    //这里是外循环的循环体

    for($j=0; $j20; $j++)//内循环开始

    {

        //这里是内循环的循环体

     }//内循环结束

 }//外循环结束

当开始执行循环时,首先执行外循环的循环体(其中包括了内循环),此时$i=0;在此过程中当执行到内循环处时开始执行内循环,$j由0递增到19;执行完20遍内循环后外循环结束,$i++;此时$i=1,再次开始执行外循环。

综上,外循环体共执行10次,内循环体执行20(内循环本身的重复次数)*10(每次外循环均执行20次内循环)=200次

多重嵌套按此方法逐层分析

代码分析:

for($i=1;$i=9;$i++){

    echo $j,' ';

    for($j=1;$j=$i;$j++){

    }

}

按上述方法进行分析的话,执行步骤如下:

$i=1代入外循环,循环开始

执行echo $j,此时未定义$j,输出 Notice: Undefined variable: j in C:\wamp\www\zhlx3.php on line 3

执行至内循环处,内循环开始,$j=1代入循环

内循环体什么都没做,循环执行1次(最终$j=2;$i=1$j;内循环终止)

$i++;$i此时等于2;再次开始外循环

echo $j;此时$j的变量还等于2;因此输出2

执行至内循环处,内循环开始,$j重新被初始化为1代入循环

内循环体什么都没做,循环执行2次(最终$j=3;$i=2$j;内循环终止)

$i++;$i此时等于3;再次开始外循环

echo $j;此时$j的变量还等于3;因此输出3

执行至内循环处,内循环开始,$j重新被初始化为1代入循环

内循环体什么都没做,循环执行3次(最终$j=4;$i=3$j;内循环终止)

$i++;$i此时等于4;再次开始外循环

。。。。。以此类推

第二段代码和第三段代码与第一段的不同之处仅在于内外循环的输出语句不同,按照此方法分析即可得到输出结果

循环算法是基础算法之一,原理简单但是分析比较麻烦,尤其涉及到嵌套。在刚开始学的时候经常搞不懂这是很正常的。解决的方法就是静下心来,把自己当做是一台速度极慢的计算机,按照for循环的执行过程逐条语句浏览,很快就可以弄明白的,祝你成功!

关于php中的foreach,while的嵌套循环问题?比如执行完sql后执行第一个while循环,然后在while循环里边在

两个while用的$conn连接要不一样才行

$conn1=mysql_connect(...);

$conn2=mysql_connect(...);

$sql1第一个循环语句

$sql2第二个循环语句

mysql_query($sql1,$conn1)

while($rows=mysql_fetch_array(...)){

mysql_query($sql2,$conn1);

while($rows=mysql_fetch_array(...)){

.......

}

}

关键是建立不同的连接对象如,$conn1和$conn2,不能用一种连接对象,让数据库查询while里面套while

关于PHP 中while嵌套循环问题,求解决

数据库

PHP处理部分

public function index(){

//我这里用的thinkPHP框架,不知道你是原生还是什么,就简单说一下思路。

$tb_type = M("Type");

$tb_product = M("Products");//这里我是实例化我的数据表,说通俗点就是连接数据库,指定某个表

$types = $tb_type-select();   //这里是在我的products表中进行select查询,而且得到的$types是一个二维数组

foreach($types as $key=$type){  //这里foreache循环遍历$types,为了取到$type得id号,以此作为条件去产品信息表中进行查询

$where["typeid"] = $type["typeid"];   //这里是where条件,如果是原生的就相当于$where="where typeid = ".$type["id"];

$products = $tb_product-where($where)-select();   //这个sql语句转换为原生是$sql = "select * from tb_products where typeid=".$value['typeid'];

$types[$key]["products"] = $products;//出现你那种情况的主要原因是数组的重构这里,我把得到的产品信息的二维数组与先得到的类别信息的数组进行组合

                                     //因为$types是一个二维数组,键值默认为0  1  2   3内部数组的键值是数据库字段的值,这里我将紧挨着数据库

                                     //字段的值给内部的一维数组添加一个除了数据库字段的值之外的products键,是为了你能够顺利的循环输出在模板页面

}

$this-assign("info",$types);

$this-display();

}

最终的结果

php 数组 循环嵌套

问题的关键在这个函数的使用上 mysql_fetch_array,循环完一遍以后数据指针已经指到最后一条数据了,第二次循环的时候就取不到数据了,每次循环结束要把数据指针重新指回首条数据。具体如下:

?php

require_once("conn.php");

$sql="SELECT * FROM big_class";

$query=mysql_query($sql);

$sqls="SELECT * FROM small_class";

$queryq=mysql_query($sqls);

while($row=mysql_fetch_array($query)){

echo $row['class_name']."br";

while($rowr=mysql_fetch_array($queryq)){

echo $rowr['sclass_name'];

}

mysql_data_seek($queryq,0)//就是这里了 呵呵

}

?

php 嵌套循环

首先是外面的循环用了$dosql-GetArray() 然后里面的循环又用了 $dosql-GetArray($row['id'])。$dosql是同一个吧,同一个就会在里面循环的时候把外面要循环的东西替换掉了。