当前位置:  开发笔记 > 编程语言 > 正文

PHP/mySQL - 如何将嵌套行提取到multidimensinal数组中

如何解决《PHP/mySQL-如何将嵌套行提取到multidimensinal数组中》经验,为你挑选了1个好方法。

来自我的另一个问题,我学会了不在循环中使用数据库查询,因此我必须学习如何在循环之前以方便的方式获取所有数据.

假设我有两个表'scale'和'items'.项目中的每个项目都属于一个比例尺,并与外键(scaleID)链接.我想在一个查询中将所有数据提取到数组结构中,这样第一个维度就是包含所有列并嵌套在其中的所有比例,所有项目都是一个比例所有列.

结果将是这样的:

scale 1, scaleParam1, scaleParam2, ...
....item1, itemParam1, itemParam2, ...
....item2, itemParam1, itemParam2, ...
scale 2, scaleParam2, scaleParam2, ...
....item1, itemParam1, itemParam2, ...
....item2, itemParam1, itemParam2, ...

到目前为止,我主要做了一对一关系的左连接.这是一对多的,我无法绕过它.

它是一个正确的连接,是否也可以使用子查询完成,如何将完整的外部行放入其中...

后来我想用嵌套的foreach循环遍历它.

也许只是我头疼...



1> Greg..:

查询应如下所示:

SELECT * FROM scales
INNER 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都包含来自BOTH表的字段...如果这是一个问题,那么你需要更改上面循环中的赋值,只取出你想要的字段.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有