2014-09-14 2 views
2

Когда у вас есть цикл foreach, как показано ниже, я знаю, что вы можете изменить текущий элемент массива на $array[$key], но есть ли способ изменить его только через $value?Значение массива изменений foreach PHP

foreach($array as $key => $value){ 

} 

Это, вероятно, очень простой, но я совсем новичок в PHP, так пожалуйста не раздражал мой вопрос :)

+0

Следовало быть дубликатом HTTP : //stackoverflow.com/questions/10121483/php-modify-current-object-in-foreach-loop – user2672165

ответ

6

Чтобы иметь возможность непосредственно присваивать значения $value, вы хотите сослаться $value предварив его &, как это:

foreach($array as $key => &$value){ 
    $value = 12321; //the same as $array[$key] = 12321; 
} 

unset($value); 

после цикла foreach, вы должны сделать unset($value), потому что вы все еще можете получить к нему доступ после цикла.
Примечание: Вы можете передать только $value по ссылке, когда массив является переменной. Следующий пример не будет работать:

foreach(array(1, 2, 3) as $key => &$value){ 
    $value = 12321; //the same as $array[$key] = 12321 
} 

unset($value); 


The php manual on foreach loops

0

есть функция для этого, и встроенной, так как ранняя версия PHP, называется array_map

Смежные вопросы