当前位置:博客首页>>编程基础 >> 阅读正文

对于foreach循环的一点小认识

作者: 郑晓 分类: 编程基础 发布于: 2012-08-28 18:15 浏览(2,602) 没有评论


首先来看一段代码:

$arr = array("a","b","c","d");
foreach($arr as $val) {
    echo $val.' ';
    $arr = array("a1","b1","c1","d1");
    foreach($arr as $val) {
        echo $val.' ';
    }  
}


这段代码会输出什么呢?
或者来个简单的:

$arr = array("a","b","c","d");
foreach($arr as $val) {
    echo $val.' ';
    $arr = array();
}

第一段代码会输出”a a1 b1 c1 d1 b a1 b1 c1 d1 c a1 b1 c1 d1 d a1 b1 c1 d1 “,第二段则会输出”a b c d”。
为什么会这样呢?当时和同事第一次看这段代码时 都以为会输出”a a1 b1 c1 d1 a1 a1 b1 c1 d1…”,但结果确不对,其实想想也是,如果是我们想的那种循环的话,估计这也算是死循环了吧。。
查了相关资料后才明白,foreach循环的数组其实是源数组的一个拷贝,也就是说foreach在第一次循环开始时便把源数组拷贝了一份,之后在循环体中对源数组进行修改时并不会对foreach产生改变。
由此想到,在平时程序编写过程中,为了减少变量使用和代码简洁的目的,在foreach结束后不会再使用到源数组的前提下,可以考虑foreach判定体内提取出的数组单项命名为与源数组同名。
也就是像这样:

$array = array(1,2,3,4,5,6,7);
foreach ($array as $array){
    echo $array;
}
↓↓微信扫码请我吃份正宗的烤面筋,可带劲啦↓↓
       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/for-little-understanding-of-the-foreach-loop.html