您好,运行结果没错的。是1、200、200,因为您设置的数组下标为数组自身每个元素的值。不知道您是否理解了?
循环您可以用笨方法理解:
// foreach 遍历开始,只执行了以下两个步骤:
$array["1"] = 200; // 这里会把字符串“1”变成整型 1,这里意思是设置第二个元素的值为200
$array["2"] = 200; // 同理,这里意思是设置第三个元素的值为200
因此最后结果(那个第一个元素没有被改变,因此仍然存在):
第一种格式遍历给定的 $a 数组。每次循环中,当前单元的值被赋给 $b 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 自 PHP 5 起,可以很容易地通过在 $b 之前加上 & 来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。例如: var_dump($arr);#打印$arr看下你就明白了,打印之后你再把&去掉,运行再打印,两次比较就清楚 第二种就是把原$arr中的每个单元重新赋值,上面那样写已经很清楚了,不明白的话,就到网上下载一个php手册,好好看看
$array["1"] = 200; // 这里会把字符串“1”变成整型 1,这里意思是设置第二个元素的值为200第一种格式遍历给定的 $a 数组。每次循环中,当前单元的值被赋给 $b 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 自 PHP 5 起,可以很容易地通过在 $b 之前加上 & 来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。例如: var_dump($arr);#打印$arr看下你就明白了,打印之后你再把&去掉,运行再打印,两次比较就清楚 第二种就是把原$arr中的每个单元重新赋值,上面那样写已经很清楚了,不明白的话,就到网上下载一个php手册,好好看看
$array[$v]中的$v是指数组的值,即1和2,那么循环两次后就相当于 $array[1]=200以及$array[2]=200,这样数组的值就变为1、200、200了
如果是 $array[$k],$k是数组的键名,即0和1,那么循环两次后就相当于 $array[0]=200以及$array[1]=200,这样数组的值会变为 200、200
php foreach数组问题