一.关于PHP中多重循环
如下代码所示,我用了三重的循环
for ($i=0; $i < $len ; $i++) {
//循环内容
for($p = 0; $p < $len; $p++){
//循环内容
for($j = 0; $j < $len; $j++){
//循环内容
}
}
}
然后今天多了一个需求,需要在最后一重循环里面加个小小的循环,因为相隔写上一段代码的日子有点长了,所以我没加思考,就直接加了一个循环如下:
for ($i=0; $i < $len ; $i++) {
//循环内容
for($p = 0; $p < $len; $p++){
//循环内容
for($j = 0; $j < $len; $j++){
//循环内容
for($i=0; $i < $len ; $i++){
//循环内容
}
}
}
}
运行完之后,发现数据只循环了一次就无法继续进行下去,我检查了程序的语句,没有语法错误,没道理会这样啊,这时我发现第四重和第一重都用了i,难道是这里出错冲突了吗?所以我把第四重的i改为了其他参数名称,发现果然循环正常了,所以在多重循环的时候要注意,每一重循环的参数不能重复,否则会导致循环出错。
二.关于thinkphp中的多重循环
在使用TP的过程中,最常见的一种处理就是把后端的数据渲染到前端模板,所以经常需要处理多重数组,而TP的volist标签是最常用的。但是发现如果直接在volist中添加volist标签,程序会出错,所以就想到一个方法,第一重循环可以使用volist,第二重以及接下来的循环可以使用foreach标签,这样一来就不会出错了,不过刚才查了一下,如果volist要嵌套volist的话,需要指定volist标签中的key值,以保循环结束,不过还没实践,先mark下来,等下再继续看一下真的出错的原因是什么。