Создание многомерного массива из данных в CodeIgniter

У меня есть таблица под названием «транспортные средства» в проекте CodeIgniter.

+----+---------+--------+ | id | name | make | +----+---------+--------+ | 1 | Corolla | Toyota | | 2 | Parado | Toyota | | 3 | Sunny | Nissan | | 4 | Maxima | Nissan | | 5 | Premoio | Toyota | +----+---------+--------+ 

Как я могу получить многомерный массив из этого, как показано ниже:

 Array ( [Toyota] => Array ( [1] => Corolla [2] => Parado [5] => Premio ) [Nissan] => Array ( [3] => Sunny [4] => Maxima ) ) 

Предположим, что вы можете получить все записи из таблицы в массиве, как в переменной $rows .

 $rows = [ ['id' => 1, 'name' => 'Corolla', 'make' => 'Toyota'], ['id' => 2, 'name' => 'Parado', 'make' => 'Toyota'], ['id' => 3, 'name' => 'Sunny', 'make' => 'Nissan'], ['id' => 4, 'name' => 'Maxima', 'make' => 'Nissan'], ['id' => 5, 'name' => 'Premoio', 'make' => 'Toyota'] ]; $result = []; foreach ($rows as $row) { $result[$row['make']][$row['id']] = $row['name']; } 

И только в одном цикле вы можете достичь этого. Надеюсь, это поможет.

CodeIgniter 3.x

 $query = $this->db->get('vehicles'); $result = []; if($this->db->count_all_results() > 0) { foreach ($query->result_array() as $row) { $result[$row['make']][$row['id']] = $row['name']; } } echo '<pre>'; print_r($result); echo '</pre>'; 

Что-то вроде этого:

 $cars = array(); $unique_makes = $this->db->distinct('make')->get('vehicles')->result(); foreach($unique_makes as $make){ $models = $this->db->where('make', $make)->get('vehicles')->result(); $cars[$make] = $models; } 

Я получаю результат с помощью следующего кода. Ответ Джереми Джексона дал мне представление, что я должен сделать для этого. Но его код не сработал. Спасибо, Джереми.

Вот мой код:

 $cars = array(); $makes = $this->db->select('make')->distinct()->get('vehicles')->result_array(); $makes = array_column($makes, 'make'); foreach($makes as $make) { $models = $this->db->where('make', $make)->get('vehicles')->result_array(); $cars[$make] = array_combine(array_column($models, 'id'), array_column($models, 'name')); } print_r($cars);