Почему операторы присваивания (=) недействительны в цикле foreach
? Я использую C#, но я бы предположил, что аргумент одинаков для других языков, поддерживающих foreach
(например, PHP). Например, если я что-то вроде этого:Почему операторы присваивания (=) недействительны в цикле foreach?
string[] sArray = new string[5];
foreach (string item in sArray)
{
item = "Some assignment.\r\n";
}
Я получаю сообщение об ошибке «Невозможно присвоить„пункт“, потому что это„итерация переменного“.»
Вообще говоря, PHP позволяет делать всевозможные вещи, которые затрудняют поддержание программного обеспечения. Что еще более важно, это не похоже на большинство других языков программирования. Использование идиом PHP на других языках, таких как это, вероятно, не самая лучшая идея для начала. –
Дублирующий вопрос: http://stackoverflow.com/questions/776430/why-is-the-iteration-variable-in-ac-foreach-statement-read-only – chilltemp