<?php

header("Content-type: text/html; charset=utf-8");

//假设这里的$goods_arr  和 $shop_arr  都是从数据库中查询出来的数组
$goods_arr = array(
          0 => array(
               'activity_id' => 1,
               'activity_name' => '午夜今日特价345345sss',
               'shop_id' => 300001,
          ),
          1 => array(
                    'activity_id' => 2,
                    'activity_name' => '0点档限量抢购',
                    'shop_id' => 300002,
          ),
          2 => array(
                    'activity_id' => 3,
                    'activity_name' => '凌晨惊爆抢购',
                    'shop_id' => 300003,
          ),
          3 => array(
                    'activity_id' => 4,
                    'activity_name' => '午夜限时抢购',
                    'shop_id' => 300003,
                    'create_time' => 1395050666,
                    'update_time' => 1411887987,
                    'is_del' => 1,
          ),
          4 => array(
                    'activity_id' => 5,
                    'activity_name' => '早场限量秒杀',
                    'shop_id' => 300001,
          ),
          5 => array(
                    'activity_id' => 6,
                    'activity_name' => '9点底价抢购',
                    'shop_id' => 300002,
          )
);

$shop_arr = array(
          0 => array(
                    'shop_id' => 300001,
                    'shop_name' => '一号店',
          ),
          1 => array(
                    'shop_id' => 300002,
                    'shop_name' => '天猫商城',
          ),
          2 => array(
                    'shop_id' => 300003,
                    'shop_name' => '京东',
          ),
          3 => array(
                    'shop_id' => 300004,
                    'shop_name' => '当当网',
          )
);

//传统做法,需要循环查询 tbShop表 的 次数就是 count($goods_arr)
foreach($goods_arr as $k=>$v){
     $goods_arr[$k]['shop_name'] = "select shop_name from tbShop where shop_id = $v[shop_id]";//这里只是SQL语句,能够表达意思即可。
}

//重点开始....................
$temp = array();
foreach($shop_arr as $val){
     $temp[$val['shop_id']] = $val;
}
//通过引用传递 &$v 将key "shop_name" 付给 $goods_arr [精辟]
foreach($goods_arr as &$v){
     $shop_id=$v['shop_id'];
     $v['shop_name']= $temp[$shop_id]['shop_name'];
}

print_r($goods_arr);

/**
//最后结果

Array
(
    [0] => Array
        (
            [activity_id] => 1
            [activity_name] => 午夜今日特价345345sss
            [shop_id] => 300001
            [shop_name] => 一号店
        )

    [1] => Array
        (
            [activity_id] => 2
            [activity_name] => 0点档限量抢购
            [shop_id] => 300002
            [shop_name] => 天猫商城
        )

    [2] => Array
        (
            [activity_id] => 3
            [activity_name] => 凌晨惊爆抢购
            [shop_id] => 300003
            [shop_name] => 京东
        )

    [3] => Array
        (
            [activity_id] => 4
            [activity_name] => 午夜限时抢购
            [shop_id] => 300003
            [create_time] => 1395050666
            [update_time] => 1411887987
            [is_del] => 1
            [shop_name] => 京东
        )

    [4] => Array
        (
            [activity_id] => 5
            [activity_name] => 早场限量秒杀
            [shop_id] => 300001
            [shop_name] => 一号店
        )

    [5] => Array
        (
            [activity_id] => 6
            [activity_name] => 9点底价抢购
            [shop_id] => 300002
            [shop_name] => 天猫商城
        )

)

*/
?>

PHP多表取数据的代码优化的更多相关文章

  1. Drf 序列化 ModelSerializer跨表取数据

    1.对于OneToOne.Foreignkey.choices字段可以使用source取出相关信息: class CourseSerializer(serializers.ModelSerialize ...

  2. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  3. Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...

  4. 组件 layui 表单抓取数据四步走

    注意事项: layui 中提交按钮是基于"监听"机制实现的. form.on() 的调用需置于 layui.use 的回调函数中. 末尾的 'return false' 不可或缺, ...

  5. 部分真验货客户未取进FP IN_SALES_ORDER表有数据,前台规划页面没显示

    描述:部分真验货客户未取进FP,检查发现IN_SALES_ORDER表有数据630\600\610行项目数据,但前台只显示630数据,600和610前台没有显示 1.查看IN_SALES_ORDER表 ...

  6. 简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据

    文章目录 一.简介 二.原理 三.爬取实战 实例1 实例2 一.简介 一般的爬虫套路无非是发送请求.获取响应.解析网页.提取数据.保存数据等步骤.构造请求主要用到requests库,定位提取数据用的比 ...

  7. EF里单个实体的增查改删以及主从表关联数据的各种增删 改查

    本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...

  8. MySQL单表百万数据记录分页性能优化

    背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台经常报告超时,尤其是页码大的页面更是慢的不行. 测试环境: 先让我们熟悉下基本的sql语句,来查看下我 ...

  9. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

随机推荐

  1. 第四篇 SQL Server代理配置数据库邮件

    本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.SQL Serve ...

  2. yum只下载安装需要的rpm包

    1.安装yum的插件yum-downloadonly yum -y install yum-downloadonly 2.使用 yum -y install somepackges --downloa ...

  3. c++ DISALLOW_COPY_AND_ASSIGN

    Google C++编程规范 – 第三十二条 -<拷贝构造函数> [规范] 仅在确认需要的时候,才定义拷贝构造函数和赋值运算符:否则,请使用DISALLOW_COPY_AND_ASSIGN ...

  4. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动

    9.9 移除场景之外的平台 用为平台是源源不断的产生的,如果不注意销毁,平台就将越积越多,虽然在游戏场景中看不到.几十个还看不出问题,那几万个呢?几百万个呢? 所以我们来看看怎么移除平台,那什么样的平 ...

  5. Leetcode: Trapping Rain Water II

    Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...

  6. Lintcode: Sort Letters by Case

    Given a string which contains only letters. Sort it by lower case first and upper case second. Note ...

  7. 01分数规划POJ2976(简单模板题)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7276   Accepted: 2523 De ...

  8. csuoj 1335: 高桥和低桥

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1335 1335: 高桥和低桥 Time Limit: 1 Sec  Memory Limit: 1 ...

  9. ACRush 楼天成回忆录

    楼教主回忆录: 利用假期空闲之时,将这几年 GCJ , ACM , TopCoder 参加的一些重要比赛作个回顾.首先是 GCJ2006 的回忆. Google Code Jam 2006 一波三折: ...

  10. 。。。Spring框架总结(一)。。。

    Spring框架已经学习了两遍了,第一遍基本上忘得差不多了,现在开始复习第二遍的,也复习的差不多了,比之前懂了很多东西,今天就写下来,记录一下我滴小成果! 首先,在Spring框架中有两个重要的概念: ...