$arr = ['css', 'js', 'image'];
foreach ($arr as &$value) {
$value = strtoupper($value);
}
foreach ($arr as $value){
echo $value.'<br>';
}
以上结果输出CSS,JS,JS;
结果可能有点蒙,那就一步步打印看结果,修改以上代码为:
$arr = ['css', 'js', 'image'];
foreach ($arr as &$value) {
$value = strtoupper($value);
}
foreach ($arr as $value){
echo '<pre>';
print_r($arr);
echo '</pre>';
}
//输出结果为
Array
(
[0] => CSS
[1] => JS
[2] => CSS
)
Array
(
[0] => CSS
[1] => JS
[2] => JS
)
Array
(
[0] => CSS
[1] => JS
[2] => JS
)
每次的结果一一解释:
在第一个循环后,得到的解果为:$value,$arr[2]为传引用的关系(这个结果很重要);
第二个循环式时候;
foreach ($arr as $value){
echo '<pre>';
print_r($arr);
echo '</pre>';
}
//key=0,$value=CSS
//由于$value=$arr[2]共引用的关系,所以得到新数组,['CSS', 'JS', 'CSS']
//key=1,$value=JS
//此时$value=php,$value=$arr[2]共引用的关系,所以得到新数组,['CSS', 'JS', 'JS']
//key=2,$value=JS
//同key=1时的结论,$value=$arr[2]=JS,得到新数组['CSS', 'JS', 'JS']
结果就显然而知了;