2011-11-22 96 views
1
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() 
+2

那么你遇到的问题是什么? – jprofitt

+0

我认为你必须提供更多信息。 $ groupValue'定义在哪里?阵列是什么样的?你得到的结果是什么,你期望的结果是什么? –

回答

3

随着$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