PHP多表取数据的代码优化
<?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] => 天猫商城 ) ) */ ?>