Я написал это
$result = array();
array_map(function($row) use ($result) {
$result[$row->id] = array();
$result[$row->id]['geojson'] = $row->geojson;
}, $regions);
а также $result
пуст в конце.
Можно ли заполнить массив таким образом?
$result
внутри функции находится копия внешнего массива, поэтому сделанные вами изменения не влияют на оригинал. Вам нужно использовать ссылку: use (&$result)
array_map(function($row) use (&$result) {
$result[$row->id] = array();
$result[$row->id]['geojson'] = $row->geojson;
}, $regions);
Или вы могли бы просто использовать foreach
foreach ($regions as $row) {
$result[$row->id] = array();
$result[$row->id]['geojson'] = $row->geojson;
}
Других решений пока нет …