【发布时间】:2014-04-19 14:14:15
【问题描述】:
伙计们。通过指针引用标准类数组元素时,我偶然发现了一种奇怪的情况。本示例运行于 php 5.4.3、windows XP、Apache
$myLittleArray = array();
$myLittleArray[0] = new stdClass;
$myLittleArray[0]->fruit = 'apple';
$myLittleArray[1] = new stdClass;
$myLittleArray[1]->fruit = 'banana';
$myLittleArray[2] = new stdClass;
$mla = &$myLittleArray[2];
$mla->fruit = 'kiwi';
print_r($myLittleArray); // $myLittleArray[2]->fruit displays as "kiwi"
foreach ($myLittleArray as $mla){
$mla->pricePerPound = 0.0;
}
print_r($myLittleArray); // $myLittleArray[2]->fruit displays as "banana" ???
第一个 printr 语句显示
Array
(
[0] => stdClass Object
(
[fruit] => apple
)
[1] => stdClass Object
(
[fruit] => banana
)
[2] => stdClass Object
(
[fruit] => kiwi
)
}
第二个 printr 语句(注意 $myLittleArray[2]->fruit 已更改为“banana”
Array
(
[0] => stdClass Object
(
[fruit] => apple
[pricePerPound] => 0
)
[1] => stdClass Object
(
[fruit] => banana
[pricePerPound] => 0
)
[2] => stdClass Object
(
[fruit] => banana
[pricePerPound] => 0
)
)
*/
如果我在最后一个 foreach 中使用不同的变量名,比如 $mla1,代码会按预期工作 ($myLittleArray[2]->fruit == 'kiwi')。这是一个 php 问题,还是我没有正确看待这个问题?
【问题讨论】: