#php #codeigniter-3
#php #codeigniter-3
Вопрос:
Надеюсь, вы сможете помочь мне со следующей проблемой. Подробнее:
Контекст. Я работаю с CodeIgniter 3 и выполняю этот запрос к базе данных:
$query = $this->db->get('animals')->result_array();
Что я получаю. Запрос возвращает массив, подобный этому:
Array (
[0] => Array (
[id] => 27
[created_at] =>
[updated_at] =>
[name] => Abc
)
[1] => Array (
[id] => 35
[created_at] =>
[updated_at] =>
[name] => Def
)
)
Что я хочу получить:
Array (
[27] => Array (
[id] => 27
[created_at] =>
[updated_at] =>
[name] => Abc
)
[35] => Array (
[id] => 35
[created_at] =>
[updated_at] =>
[name] => Def
)
)
Вопрос.Есть ли способ настроить запрос так, чтобы ключи первого уровня возвращаемого массива были равны идентификаторам извлеченных записей?
JDatabase Joomla имеет метод loadAssocList($key), который делает именно то, что я хочу сделать в CodeIgniter.
Можно ли настроить запрос в CodeIgniter так, чтобы он вел себя как метод loadAssocList() JDatabase от Joomla? Если это невозможно, что было бы лучшей альтернативой?
Комментарии:
1. Первый «уровень» — это индекс массива… Поэтому, если вы на самом деле не хотите перебирать массив и каждый раз менять ключи, вам следует просто оставить это в покое. Почему вы хотите это сделать?
Ответ №1:
Вы можете получить массив с помощью некоторого дополнительного кода PHP.
// using your query ...
$query = $this->db->get('animals')->result_array();
// loop through each record of the result array and change its key positions
foreach ($query as $key => $row) {
$key_change = $row['id'];
unset($query[$key]);
$query[$key_change] = $row;
}
// view output (optional)
var_dump($query);
die();