PHP / mySQL-如何将嵌套的行提取到多维数组
来自我的另一个问题,在该问题中,我学会了不要在循环内使用db查询,因此,在循环遍历之前,我必须学习如何以方便的方式获取所有数据。
假设我有两个表“ scales”和“
items”。项中的每个项都属于一个尺度,并与一个外键(scaleID)链接。我想在一个查询中将所有这些数据提取到一个数组结构中,以便第一个维度是所有列的所有比例尺并嵌套在其中,一个项目的所有项目都按比例缩放所有列。
结果将是这样的:
scale 1, scaleParam1, scaleParam2, .......item1, itemParam1, itemParam2, ...
....item2, itemParam1, itemParam2, ...
scale 2, scaleParam2, scaleParam2, ...
....item1, itemParam1, itemParam2, ...
....item2, itemParam1, itemParam2, ...
到目前为止,我主要完成了一对一关系的左联接。这是一对多的,我只是无法解决。
它是正确的联接吗,也可以通过子查询来完成,如何也将完整的外部行放入其中…
稍后,我想遍历嵌套的foreach循环。
也许只是我头疼…
回答:
查询应如下所示:
SELECT * FROM scalesINNER JOIN items ON scales.id = items.scale_id
如果要使用嵌套循环进行遍历,则需要将该数据拉入数组-希望您不会拉回太多以至于会占用过多内存。
$scales = array();while ($row = mysql_fetch_assoc($data))
{
if (!isset($scales[$row['scale_id']]))
{
$row['items'] = array();
$scales[$row['scale_id']] = $row;
}
$scales[$row['scale_id']]['items'][] = $row;
}
然后,您可以遍历:
foreach ($scales as $scale){
foreach ($scale['items'] as $item)
; //... do stuff
}
注意:这有点天真,因为$ scale和$ item都包含两个表中的字段…如果这是一个问题,那么您需要在上面的循环中更改分配以仅拉出您想要的字段。
以上是 PHP / mySQL-如何将嵌套的行提取到多维数组 的全部内容, 来源链接: utcz.com/qa/422890.html