首页 > 作文

PHP优化教程之解决嵌套问题

更新时间:2023-04-09 01:49:00 阅读: 评论:0

在开发过程中,我们经常遇到一对多的场景,

例如:查询订单列表,并且展示订单详情商品、数量数据

思路0:传统做法

a. 查询订单列表

b. 遍历订单详情

$orderlist = lect * from order where xx;foreach($orderlist as $orderitem) {$orderitem->detaillist = lect * from order_detail where order_id = $orderitem->id;}

分析:查询sql次数为:n+1(n为订单个数),这样频繁请求数据库,影响效率

优化:减少频繁请求数据库

思路1:

a大学校长什么级别. 查询订单列表后,利用in查出所有订单详情

b. 通过(订单表id => 订单详情表order_id)遍历匹配数据

$orderlist = lect * from order where xx;$orderid = array_pluck($orderlist, 'id'); // laravel内置数组辅助函数$orderdetaillis龙岗区东升学校t一年级下册语文教学总结 = lect * from order_detail where order_id in $orderid;foreach($orderlist as $orderitem) {$detaillisttemp = [];foreach($orderdetaillist as $orderdetailitem) {if ($orderitem->id == $orderdetailitem->order_id) {$detaillisttemp[] = $orderdetailite深大校花m;}}$orderitem->detaillist = $detaillisttemp;}

分析:降低查询后,但2层遍历,复杂度较高,数量过大容易内存溢出

优化:降低复杂度

思路2:

a. 查询订单列表后,利用in查出所有订单详情

b. 订单详情列表转换成以订单id为索引,用ist来匹英雄英语怎么说配订单的详情

$orderlist = lect * from order where xx;$orderid = array_pluck($orderlist, 'id'); // laravel内置数组辅助函数$orderdetaillist = lect * from order_detail where order_id in $orderid;// 将订单详情转换成以订单id为索引【方式1】$orderdetaillist = arraygroup($orderdetaillist, 'order_id');// 或:将订单详情转换成以订单id为索引【方式2:如果为一对一,可以用array_column】// $orderlist = array_column($orderdetaillist, null, 'order_id'); foreach($orderlist as $orderitem) {$orderitem->detaillist = $orderdetaillist[$orderitem->id] ?? [];}// 根据key数组分组function arraygroup($list, $key) { $newlist = []; foreach ($list as $item) {  $newlist[$item[$key]][] = $item; } return $newlist;}

总结

到此这篇关于php优化教程之解决嵌套问题的文章就介绍到这了,更多相关php解决嵌套问题内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-09 01:48:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2226ae4e682b9fafb4d0b5fb94b04497.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP优化教程之解决嵌套问题.doc

本文 PDF 下载地址:PHP优化教程之解决嵌套问题.pdf

标签:订单   详情   遍历   数组
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图