假设我有以下表格:
这是一种自上而下的层次结构,我使用select语句和循环来生成嵌套数组:
$result_array = array();
$projects = mysql_query(' SELECT * FROM projets') ;
$i = 0 ;
while( $row_proj = mysql_fetch_assoc($projects) )
{
$result_array[$i] = $row_proj ;
$documents = mysql_query('SELECT * FROM documents WHERE project_id='.$row['project_id']);
$doc_res = array();
while( $row_doc = mysql_fetch_assoc($documents)
{
$doc_res[] = $row_doc;
}
$result_array[$i]['documents'] = $row_doc ;
$i++;
}
.. and so on
结果是nesteed数组,所以在视图中我可以打印它:
foreach( $projects as $project )
{
echo $project['project_name'];
foreach( $project['documents'] as $document )
{
echo ..
}
}
我如何使用SQL语句或任何其他东西使用简单的扁平循环生成这个,这种方式似乎不是最好的,有时我使用连接但它不生成嵌套数组之类的东西。
答案 0 :(得分:2)
如果我理解你想要实现的目标,我会这样做:
SELECT * FROM documents
INNER JOIN projects ON projects.id = documents.project_id
然后遍历所有文档,通过project_id和PHP将它们分组到数组中。您将再次有一个查询。可以做MySQL循环,但宁可做一件丑陋的事情,对于上面的例子,它不会给你带来任何好处。