php foreach的使用注意

众所周知,foreach用于对数组的遍历,但是,在foreach($arr as $value)中,$value只是原值的一个副本,因此如果在foreach里进行该数值的修改,是不会影响到源数组的。

例:

<?php

    $colors= array('red','blue','green','yellow');
    
    foreach ($colors as $color){
        $color = "xxxx";
    }
    
    foreach ($colors as $color){
        echo $color."<br></br>";
    }
?>

在上例中,第一个foreach循环并没有修改到$colors这个数组,所以在第二个foreach循环的时候还是输出:

red

blue

green

yellow

如何使得foreach($arr as $value)中的$value不是一个副本而可以在foreach循环中进行原数值的修改呢?

其实很简单,将其改为foreach ($arr as &$value),即在$value前添加取地址符。

 

还需要注意的是,当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。 

原文地址:https://www.cnblogs.com/wuyou/p/3378480.html