微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在php中对左联接查询返回的数组数据进行分组?

我有以下具有以下值的2表:

tbl_brand

ID名称

1个苹果

2三星

tbl_products

ID brand_id p_name

1个1移动

2个1 Earpods

3 2移动

在这里,当我使用左联接查询

选择’b’.’id’作为’brand_id’,’b’.’name’作为’brand_name’,’p’.’p_name’作为’product_name’FROM’tbl_brand”b’左联接’tbl_products”p ‘ON’p’.’brand_id’=’b’.’id’

并打印结果,得到以下数组:

Array
    (
        [0] => stdClass Object
            (
                [brand_id] => 1
                [brand_name] => Apple
                [product_name] => Mobile
            )
        [1] => stdClass Object
            (
                [brand_id] => 1
                [brand_name] => Apple
                [product_name] => Earpods
            )
        [2] => stdClass Object
            (
                [brand_id] => 2
                [brand_name] => Samsung
                [product_name] => Mobile
            )

一切正常.但是我正在寻找的结果是这样的:

Array
    (
        [0] => stdClass Object
            (
                [brand_id] => 1
                [brand_name] => Apple
                [product_name] => stdClass Object
                               (
                                   [0] => Mobile
                                   [1] => Earpods
                               )
            )
        [1] => stdClass Object
            (
                [brand_id] => 2
                [brand_name] => Samsung
                [product_name] => Mobile
            )

我想根据brand_id键对数据进行分组.我怎样才能做到这一点 ?

解决方法:

尽管您可以在单个循环中生成所需的数组,但我宁愿执行两个查询.首先,将所有品牌放入一个阵列,然后向每个品牌添加一个空的产品阵列.然后获取所有产品并将其分配给相关品牌.

由于我不知道您使用的是什么数据库库,因此这里有一些伪代码

$data = [];

$brandResult = $db->query("SELECT id, name FROM tbl_brand");
while ($row = $brandResult->fetchObject()) {
    $row->product_names = [];
    $data[$row->id] = $row;
}

$productResult = $db->query("SELECT id, brand_id, p_name FROM tbl_products");
while ($row = $productResult->fetchObject()) {
    $data[$row->brand_id][$row->id] = $row->p_name;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐