• 一、描述
  • 二、代码

一、描述

  • 已知:商品数据,商品详情数据(goods_id为商品ID)
  • 求:把商品详情数据加入到商品数据;如果一个商品有多个商品详情,那么商品数据只展示一次
  • 效果图如下:

二、代码

public function test() {list($goodsList, $goodsDetailList) = self::getData();//商品详情ID对应商品ID$detailIdToGoodsId = array_column($goodsDetailList, 'goods_id', 'id');//商品详情ID一维数组$goodsDetailIds = array_column($goodsDetailList, 'id');//二维数组:一维数组内容(商品详情ID对应单条商品详情数据)$goodsDetailCombine = array_combine($goodsDetailIds, $goodsDetailList);$goodsFields = []; //获取商品的字段$result = []; //结果数组foreach ($goodsList as $value) {//处理商品的数据$value['type_text'] = "类型 [ " . $value['type'] . " ]";//商品数据字段获取if (empty($goodsFields)) {$goodsFields = array_keys($value);}//获取商品ID的所有商品详情ID//array_key()第二个参数:可选。您可以指定键值,然后只有该键值对应的键名会被返回。$detailIds = array_keys($detailIdToGoodsId, $value['id']);//把商品详情数据加入到商品数据中foreach($detailIds as $key => $detailId) {if ($key != 0) { //如果不是第一条商品详情数据,则商品的信息设置为空foreach ($goodsFields as $field) {$value[$field] = '';}}//追加商品详情的数据$info = $goodsDetailCombine[$detailId];$value['detail_name'] = $info['detail_name'];$value['detail_desc'] = $info['detail_desc'];$value['detail_id_text'] = "商品详情ID是 [ " . $info['id'] . " ]";$result[] = $value; //结果数据的数量等于商品详情的数量}}self::htmlTable($result);
}/*** 返回商品数据,商品详情数据* @return array*/
public function getData() {//商品数据$goodsList = [['id' => 1, 'name' => '商品1', 'type' => 1, 'desc' => '商品1描述'],['id' => 2, 'name' => '商品2', 'type' => 1, 'desc' => '商品2描述'],['id' => 3, 'name' => '商品3', 'type' => 2, 'desc' => '商品3描述'],['id' => 4, 'name' => '商品4', 'type' => 3, 'desc' => '商品4描述'],];//商品详情数据$goodsDetailList = [['id' => 1, 'goods_id' => 1, 'detail_name' => '商品1的详情1', 'detail_desc' => '商品1的详情描述1'],['id' => 2, 'goods_id' => 1, 'detail_name' => '商品1的详情2', 'detail_desc' => '商品1的详情描述2'],['id' => 3, 'goods_id' => 2, 'detail_name' => '商品2的详情1', 'detail_desc' => '商品2的详情描述1'],['id' => 4, 'goods_id' => 3, 'detail_name' => '商品3的详情1', 'detail_desc' => '商品3的详情描述1'],['id' => 5, 'goods_id' => 3, 'detail_name' => '商品3的详情2', 'detail_desc' => '商品3的详情描述2'],['id' => 6, 'goods_id' => 3, 'detail_name' => '商品3的详情3', 'detail_desc' => '商品3的详情描述3'],['id' => 7, 'goods_id' => 4, 'detail_name' => '商品4的详情1', 'detail_desc' => '商品4的详情描述1'],['id' => 8, 'goods_id' => 4, 'detail_name' => '商品4的详情2', 'detail_desc' => '商品4的详情描述2'],];return [$goodsList, $goodsDetailList];
}/*** 浏览器打印处理的数据* @param $result*/
public function htmlTable($result) {$bodyHtml = '';foreach ($result as $value) { //拼接表格体内容$body = <<<EOF
<tr>
<td>{$value['id']}</td>
<td>{$value['name']}</td>
<td>{$value['type_text']}</td>
<td>{$value['desc']}</td>
<td>{$value['detail_id_text']}</td>
<td>{$value['detail_name']}</td>
<td>{$value['detail_desc']}</td>
</tr>
EOF;$bodyHtml .= $body;}//拼接表格内容$html = <<<EOF
<table border="1">
<tr><th>ID</th><th>商品名</th><th>商品类型</th><th>商品描述</th><th>商品详情ID</th><th>商品详情名</th><th>商品详情描述</th>
</tr>
{$bodyHtml}
</table>
EOF;echo $html; //输出表格内容
}

PHP把商品详情数据加入到商品数据,如果商品有多个详情只展示一次商品数据相关推荐

  1. 京东搜索产品时,pc端列表页只展示100页的数据

    问题描述:当你在电脑上浏览京东网站时,官网只给你返回100页数据,每页60个,总共只显示6000个商品,但实际有几十万的相关产品没有展示出来. 这算是京东的一种反扒机制,美团的电脑端也是这样,只给你返 ...

  2. 使用 el-table 实现树形数据懒加载、点击行展开、每次只展示一条数据(大类)以及自定义表格合计值

    1. 使用 el-table 实现树形数据懒加载 实现必需条件: lazy :load="loadNode" :tree-props="{ children: 'chil ...

  3. android数据回传多个页面_Android Day06四大组件之Activity多页面跳转和数据传递

    ToolBar中menu无法同时显示图标和文字问题的解决方法 Toolbar添加返回按钮 ToolBar与ActionBar 1.什么是Activity 官方文档是这么说的:Anwhich users ...

  4. Qt读写JSON,以及使用QTreeView展示和编辑JSON数据

    0.前言 JSON(JavaScript Object Notation)是一种轻量级的结构化数据格式,相对于XML语法更简洁.它具有6种基本数据类型:bool(true或false字符串表示).do ...

  5. 智慧农业、数字农业、农产品交易、发布供应、采购详情、报价列表、交易订单、供应大厅、采购大厅、发布采购、采购需求、采购订单、在售商品、出售订单、账户中心、洽谈列表、入驻申请、Axure原型、农业数据看板

    智慧农业.数字农业.农产品交易.发布供应.采购详情.报价列表.交易订单.供应大厅.采购大厅.发布采购.采购需求.采购订单.在售商品.出售订单.账户中心.洽谈列表.入驻申请.Axure原型.rp原型 A ...

  6. 淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)

    淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)接口代码教程如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须 ...

  7. 移动端通用元件库+app通用元件库+数据展示+操作反馈+通用模板+数据录入+列表页+表单页+详情页+通用版布局+移动端手机模板+业务组件+反馈组件+展示组件+表单组件+导航组件

    移动端通用元件库+app通用元件库+数据展示+操作反馈+通用模板+数据录入+列表页+表单页+详情页+通用版布局+移动端手机模板+业务组件+反馈组件+展示组件+表单组件+导航组件 原型展示及下载地址:h ...

  8. php一行多个商品,【后端开发】php一行展示多个商品怎么实现

    php一行展示多个商品怎么实现 php可以用来连接数据库查询商品,并输出展示给用户,但想要实现一行展示多个商品需要用到css技术,具体实现如下: 1.首先php代码 $sql = "sele ...

  9. 写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表

    写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表 写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商 ...

  10. 数据中台实战(一):以B2B电商亿订为例谈数据埋点(产品经理视角)

    背景 富力环球商品贸易是富力集团旗下汇聚原创设计师品牌及时尚买手/采购商两大社群,通过亿订B2B电商.RFSHOWROOM.环贸快版.环贸映像.富运通.富贸通等子品牌为时尚行业提供一站式产业+渠道服务 ...

最新文章

  1. 回溯法模板(矩阵中操作)
  2. 查看mysql主从配置的状态及修正 slave不启动问题
  3. Winxp中加密自己的用户目录
  4. c语言编程数学黑洞,一个数学黑洞——6174
  5. 退出域不能够重新加入域,郁闷呀
  6. CSS 强制换行和禁止换行学习
  7. caffe.net matlab,windows-matlab环境下,生成的caffe模型无法运行
  8. 避免unicode字符被截断的方法
  9. DuiLib快速入门。你的第一个DuiLib程序
  10. 牛顿莱布尼茨计算机公式,牛顿莱布尼茨公式
  11. micropython控制舵机_玩转micro:bit-用BXY控制小舵机、360舵机和带驱动N20电机
  12. MPB:南农韦中组-​根系分泌物调控土壤微生物群落结构和功能的研究方法
  13. Showwindow及参数介绍
  14. PTA L1-088 静静的推荐
  15. 还记得那些老国手吗? 07
  16. 极客时间限时免费开放全部课程!别纠结了选这几门!
  17. WIN10系统设置默认文件查看方式
  18. 什么是token及怎样生成token
  19. Latex实例[2]:跨页表格制作方法, longtable和 supertabular
  20. 微信小程序之蓝牙通信模块

热门文章

  1. bagging boosting 随机森林 GBDT对比
  2. java中的值传递与引用传递
  3. jar包 java_深入理解JAR包
  4. NYOJ2-括号配对问题
  5. 可道云 docker 群晖_【curl】校园网群晖DS120j自动认证
  6. linux 更新目录时间戳,修改linux 文件的时间戳
  7. mysql导出一行数据类型_MySQL 导出数据
  8. 地域和地方的区别_区域经济学入门级名词内涵的探索(区域、地域、地区、空间和区位的区别与联系)...
  9. 【策划方案手段】为本单位精心打造一场专业电视台效果的知识竞赛,如何搞?如何花钱最少?
  10. 中国南方航空新开广州直飞宿务航线