为什么数组中两个项的值都会发生变化?我只是想改变等于$ testitem的键的值。
以下代码的理想结果: 项目:5数量:12 项目:6数量:2
以下代码的当前结果是: 项目:5数量:12 项目:6数量:12
<?php
$items = array(
'5' => '4',
'6' => '2',
);
$testitem = '5';
$testvalue = '8';
foreach($items as $key => &$value)
{
if ($key == $testitem)
{
$value = $value + $testvalue;
}
}
foreach($items as $key => $value)
{
print 'item:'.$key.' Quantity:'.$value.'<br/>';
}
?>
答案 0 :(得分:8)
当您尝试将$value
变量作为参考传递时,问题就出现了。通过将foreach
循环修改为这样 -
foreach($items as $key => $value){
if ($key == $testitem){
$items[$key] = $value + $testvalue;
}
}
只需使用当前$key
或$testitem
的值作为对$items
数组的引用 - 并修改此类内容。
答案 1 :(得分:0)
Becouse引用$ value,最后一个数组元素在foreach循环之后仍然存在。
使用unset($value)
,在您的第一次预告之后,您的代码将正常运行。
答案 2 :(得分:-2)
为什么不直接使用此代码而不是循环:
$ items [$ testitem] + = $ testvalue;
这适用于您的示例。
在php中,您可以使用变量引用数组元素。所以它完全符合你的要求。