我正在做一个脚本,需要处理数组的每个值,所以我为自己提供了技巧,可以在foreach的value参数中使用赋值运算符,以便直接编辑数组值,并且我注意到foreach的每个最后一个值都会带来一个奇怪的问题。
那是PHP脚本:
<?php
$array = array('test1', 'test2', 'test3', 'test4');
var_dump($array);
echo "<br />";
foreach ($array as &$value)
{
// do something
$value = $value . "foo";
}
var_dump($array);
echo "<br />";
foreach ($array as $value)
{
echo $value . "<br />";
}
这就是输出:
array(4) { [0]=> string(5) "test1" [1]=> string(5) "test2" [2]=> string(5) "test3" [3]=> string(5) "test4" }
array(4) { [0]=> string(8) "test1foo" [1]=> string(8) "test2foo" [2]=> string(8) "test3foo" [3]=> &string(8) "test4foo" }
test1foo
test2foo
test3foo
test3foo
您注意到,在foreach之后的数组的var_dump中,在最后一个值中,值类型(字符串)的前面是赋值运算符。
当我尝试输出数组的每个值时,它没有给我最后一个值“ test4foo”,而是重复了先前的值(倒数第二个)。
是错误吗?有人可以解释吗?