为了账号安全,请及时绑定邮箱和手机立即绑定

在php中创建后将信息插入多维数组

在php中创建后将信息插入多维数组

PHP
拉风的咖菲猫 2022-12-23 09:44:45
我在另一篇关于如何从 SQL 返回的记录创建多维数组的帖子中发布了这个,因为在听到一些建议后我返回了重复的信息我来到这个解决方案它返回了我需要的但没有返回所有应该的信息子数组内部。我从数据库返回了以下行Array(    [0] => Array        (        [iSaleID] => 5027347        [userID] => 123        [qty] => 1.0        [price] => 20.00        [item] => Cheese    )[1] => Array    (        [iSaleID] => 5027347        [userID] => 123        [qty] => 2.0        [price] => 10.00        [item] => Milk    )我想实现这一点: Array    (    [0] => Array        (            [iSaleID] => 5027347            [userID] => 123            [items] => Array (                  [0] => Array                      (                        [description] => Cheese                        [qty] => 1.0                        [price] => 20.00                      )                  [1] => Array                      (                        [description] => Milk                        [qty] => 2.0                        [price] => 10.00                      )                  )             )        )...不确定我的括号是否正确,但我试图创建它,所以我执行了以下操作:    $sql = "storedProcedure";    $query= $con->query($sql);    $results =  $query->fetchAll(PDO::FETCH_ASSOC);    $orderCnt = 0;    $groupOrders = array();    $lastSaleID = null;    if(count($results) > 0){        foreach($results as $order){            if($order['iSaleID'] != $lastSaleID ){                $groupOrders[$orderCnt]['id'] = $order['iSaleID'];                $groupOrders[$orderCnt]['userID'] = $order['userID'];                $groupOrders[$orderCnt]['items'][] = array('desc' => $order['desc'], 'qty' => $order['qty'] );                $orderCnt++;                $lastSaleID = $order['iSaleID'];            }        }    }这将返回 saleID,每个客户只返回一次用户 ID(这是我想要的),但只返回他们订购的第一件商品。我认为这是因为因为 saleID 等于 $lastSaleID 那么它会跳过具有相同销售 ID 的其余行,但是我尝试将$groupOrders[$orderCnt]['items'][] = array('desc' => $order['desc'], 'qty' => $order['qty'] );其放在 IF 语句之外,但这不起作用。有什么建议吗?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这应该工作。必须更改数组中的一些变量名称,因为您的示例数据不适合代码示例中的变量:


        $results = [

            [

                'iSaleId' => 5027347,

                'userId' => 123,

                'qty' => 1.0,

                'price' => 20.00,

                'item' => 'Cheese',

            ],

            [

                'iSaleId' => 5027347,

                'userId' => 123,

                'qty' => 2.0,

                'price' => 10.00,

                'item' => 'Milk',

            ],

        ];


        $orderCnt = 0;

        $groupOrders = [];

        if(count($results) > 0) {

            foreach($results as $order){

                if (!isset($groupOrders[$order['iSaleId']])) {

                    $groupOrders[$order['iSaleId']] = [

                        'id' => $order['iSaleId'],

                        'userId' => $order['userId'],

                        'items' => [],

                    ];

                    $orderCnt++;

                }

                $groupOrders[$order['iSaleId']]['items'][] = [

                    'desc' => $order['item'],

                    'qty' => $order['qty'],

                ];

            }

        }


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信