Как в foreach обратиться к массиву по ссылке?

230
09 апреля 2017, 04:40

Структура такая:

arr [
    inner1[],
    inner2[],
    ...
]

Прохожу циклом по массиву arr:

foreach ($arr as $inner) {
    $inner[...] = ...;
}

В общем, произвожу действия со вложенным массивом, но так понимаю, что значение $inner в foreach не является указателем на вложенный массив, поэтому в самом массиве изменений не производится.

Единственным вариантом вижу проход по массиву обычным циклом и обращение к каждому элементу по индексу. Это, и правда, единственный вариант?

Answer 1
foreach ($arr as &$inner) {
     $inner[...] = ...;
}
Answer 2

Можно использовать array_map(callback, array) для применения функнии calback ко всем элементам массива.

function mycallback($v)
{
    $v=strtoupper($v);
    return $v;
}
$a=array("Animal" => "horse", "Type" => "mammal");
array_map("mycallback", $a)

вернет

Array ( [Animal] => HORSE [Type] => MAMMAL ) 

Тут пример использования https://www.w3schools.com/php/func_array_map.asp

Если, по каким-то критериям, нужно удалить часть массива, можно использовать array_filter(array, callback)

function test_odd($var)
{
    return($var & 1);
}
$a1=array("a","b",2,3,4);
array_map($a1, "test_odd")

вернет

Array ( [3] => 3 ) 

https://www.w3schools.com/php/func_array_filter.asp

READ ALSO
Русская дата, +n дней

Русская дата, +n дней

Есть ли более лучшее решение?

210
Как получить строку из терминала в скрипт?

Как получить строку из терминала в скрипт?

Собираюсь скриптом php отправлять AT команду usb модему на получение баланса по ussdС командами разобрался, ответ тоже получаю (но зашифрованный)

211
POST-запрос для авторизации в facebook (cURL PHP)

POST-запрос для авторизации в facebook (cURL PHP)

не получается авторизоваться в facebook с помощью CURL'а

357
двузначные числа в str_replace

двузначные числа в str_replace

Не могу найти подходящей функцииИли как написать самому регулярку, чтобы правильно выводило?

222