PHP foreach изменить значение массива

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

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

}

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

2

Решение

Чтобы иметь возможность напрямую присваивать значения $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);

Руководство по PHP для циклов foreach

6

Другие решения

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

0