一些背景。我有兩個來自PubMed XML文件的MySQL表。 pubauth表具有給定參考的所有作者,並且pubmed表具有所有獨特的pubmed信息。每個發佈的記錄有n + 1位作者。我想我需要是這樣的:使用Codeigniter從MySQL查詢創建多維數組
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在我的模型,我有:
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)))
數據,只有最後一排和姓氏丟失。對不起漫不經心,但這讓我失望了。我可以使用二維數組,但似乎無法繞過這一個。我在View中拍攝的輸出看起來像PubMed參考文獻; Author1 ... Author_n,標題,數據,日誌,卷,問題,頁面。我現在所能得到的是每個作者的標題,數據,期刊,卷,期,頁面作爲一行。任何幫助將不勝感激。
這實際上仍然無法正常工作。作者的{foreach}遍歷每篇PubMed文章的所有作者。 –