Изменение значений переменных ключа в массиве с помощью цикла Foreach - PullRequest
1 голос
/ 22 ноября 2011
foreach( $notZeroValue as $cardSetPosition => $timesChosen){
    echo $groupValue;
    $notZeroValue[$cardSetPosition + ($groupValue*100)] = $notZeroValue[$cardSetPosition];
    unset ($notZeroValue[$cardSetPosition]);
}

Вывод 0000 (правильно, потому что $notZeroValue имеет четыре элемента и для каждого $groupValue = 0)

Я знаю, что должна быть ошибка новичка, потому что при изменении *100 на +100 производит ключевые значения 101, 102, 103, 104.

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

1 Ответ

3 голосов
/ 22 ноября 2011

Если $groupValue равно 0, вы получите правильные результаты, потому что

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

становится

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

, который перезаписывает значение массива на себя.

Далее вы удаляете элемент из массива.

Так что в конце массив будет пустым.

Но когда вы изменяете * на + и $groupValue все еще на 0:

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

вы не будете перезаписывать значения массива, вместо этого вы будете создавать новые пары ключ / значение, где ключи на 100 больше, чем старые ключи. Затем вы удаляете старый ключ / значение из массива. В итоге у вас есть 4 новые пары ключ / значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...