PHP错误与循环中的赋值运算符?

时间:2018-08-13 18:18:34

标签: php

我正在做一个脚本,需要处理数组的每个值,所以我为自己提供了技巧,可以在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”,而是重复了先前的值(倒数第二个)。

是错误吗?有人可以解释吗?

0 个答案:

没有答案