2011-11-22 62 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