改变在阵列变量的键值与Foreach循环
问题描述:
foreach($notZeroValue as $cardSetPosition => $timesChosen){
echo $groupValue;
$notZeroValue[$cardSetPosition + ($groupValue*100)] = $notZeroValue[$cardSetPosition];
unset ($notZeroValue[$cardSetPosition]);
}
输出为0000
(正确的,因为$notZeroValue
具有四个元件和为每一个$groupValue = 0
)改变在阵列变量的键值与Foreach循环
我知道必须有一个新手错误,因为改变*100
到+100
产生关键值101
,102
,103
,104
。
print_r($notZeroValue); //output = array()
答
随着$groupValue
等于0
你得到正确的结果,因为
$notZeroValue[$cardSetPosition + ($groupValue*100)] = $notZeroValue[$cardSetPosition];
成为
$notZeroValue[$cardSetPosition] = $notZeroValue[$cardSetPosition];
其与自身覆盖的数组值。
接下来从数组中删除该元素。
所以在最后阵列将是空的。
但是,当你在0
改变*
到+
和$groupValue
还是:
$notZeroValue[$cardSetPosition + ($groupValue+100)] = $notZeroValue[$cardSetPosition];
,你会不会被覆盖数组值,而不是你将创建新的键/值对,其中键是100多比旧的密钥。接下来从数组中删除旧的键/值。所以最后你有4个新的键/值对。
+0
啊!我没有意识到这一点!好吧,我会添加一个如果当$ groupValue == 0谢谢! – Gamemorize
那么你遇到的问题是什么? – jprofitt
我认为你必须提供更多信息。 $ groupValue'定义在哪里?阵列是什么样的?你得到的结果是什么,你期望的结果是什么? –