一些背景。我有两个从 PubMed XML 文件派生的 MySQL 表。pubauth 表包含给定参考的所有作者,而 pubmed 表包含所有唯一的 pubmed 信息。每条 pubmed 记录有 n+1 个作者。我认为我需要的是:
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 ) ) )
数据它只是最后一行,缺少 LastName。很抱歉漫无边际,但这让我很困惑。我可以使用 2D 数组,但似乎无法完全理解这个数组。我在视图中拍摄的输出看起来像 PubMed 参考;Author1...Author_n、标题、数据、期刊、卷、期、页。我现在只能得到每个作者的标题、数据、期刊、卷、期、页。任何帮助将不胜感激。