Некоторые фон. У меня есть две таблицы MySQL, полученные из файлов PubMed XML. В таблице pubauth есть все авторы для данной ссылки, а в опубликованной таблице есть вся уникальная информация. Для каждой опубликованной записи есть n + 1 авторов. То, что я думаю, что мне нужно это:Создание многомерного массива из MySQL запросов с использованием Codeigniter
Array(
[id]=> Array([id]=>1
[PMID]=>123456
Array(
[pubauth]=>Array(
[pubauth_id]=>1
[LastName]=>Chen
)
)
)
)
Моя модель:
$this->db->select('pubmed.id, PMID, pubauth.id AS pubauth_id, LastName');
$this->db->from('pubmed');
$this->db->join('pubauth', 'pubmed_id = pubmed.id', 'left outer');
$this->db->where('idecm',$keyword);
$query = $this->db->get();
$temp_result = array();
foreach ($query->result_array() as $row){
$temp_result[] = array(
'pubmed_id' => $row['id'],
'PMID' => $row['PMID'],
'LastName' => $row['LastName'],
'pubauth_id'=> $row['pubauth_id']
);
}
Это возвращает каждую строку как массив в $ temp_result. То, что я снимаю, похоже на этот вопрос: PHP MYSQL multidimensional array. заменив Еогеасп в моей модели в соответствии с ответом, у меня есть:
foreach ($query->result_array() as $row)
{
$r_array[$row["id"]]=array();
$row_st = (string) $row["pubauth_id"];
$r_array[$row["id"]][] = $row_st;
}
foreach ($r_array as $id => & $data) {
// Start with just ID
$newarray = array(
"id" => $id
);
if (count($data) == TRUE)
$newarray["pubauth_id"] = & $data;
$finalarray[] = & $newarray;
print_r($finalarray);
unset($newarray);
}
Этот массив, который я получаю от этого
Array ([0] => Array ([id] => 1 [pubauth_id] => Array ([0] => 7))) Array ([0] => Array ([id] => 1 [pubauth_id] => Array ([0] => 7)) [1] => Array ([id] => 2 [pubauth_id] => Array ([0] => 17)))
данных это только последняя строка и LastName отсутствует. Извините за бессвязное, но это меня фламинго. Я могу работать с 2D-массивами, но, похоже, не обволакиваю его. Выход, который я снимаю в представлении, будет выглядеть как ссылка PubMed; Author1 ... Author_n, Title, Data, Journal, Volume, Issue, Page. Теперь я могу получить название, данные, журнал, том, выпуск, страницу для каждого автора в виде строки. Любая помощь будет оценена.
Это на самом деле все еще работает неправильно. {Foreach} по авторам просматривает все авторы для каждой статьи PubMed. –