使用Foreach循环更改Array中的变量键值

时间:2011-11-22 13:33:26

标签: php arrays foreach

foreach( $notZeroValue as $cardSetPosition => $timesChosen){
    echo $groupValue;
    $notZeroValue[$cardSetPosition + ($groupValue*100)] = $notZeroValue[$cardSetPosition];
    unset ($notZeroValue[$cardSetPosition]);
}

输出为0000(正确,因为$notZeroValue有四个元素,每个元素$groupValue = 0

我知道必须有新手错误,因为将*100更改为+100会产生关键值101102103104

print_r($notZeroValue); //output = array()

1 个答案:

答案 0 :(得分:3)

$groupValue等于0,您获得了正确的结果,因为

$notZeroValue[$cardSetPosition + ($groupValue*100)] = $notZeroValue[$cardSetPosition];

变为

$notZeroValue[$cardSetPosition] = $notZeroValue[$cardSetPosition];

用自己覆盖数组值。

接下来,从数组中删除元素。

所以最后数组将为空。

但是当您将*更改为+$groupValue仍然位于0时:

$notZeroValue[$cardSetPosition + ($groupValue+100)] = $notZeroValue[$cardSetPosition];

你不会覆盖数组值,而是创建新的键/值对,其中键比旧键多100个。接下来,从数组中删除旧键/值。所以最后你有4个新的键/值对。