PHP将两个关联数组合并函数提高函数效率


Posted in PHP onMarch 18, 2014

在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下:

使用下面的字节写的函数可以解决

从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并:

$test1 = Array( 
0 => Array( 
'id' => 9478137, 
'create_time' => 1394760724 
), 
1 => Array( 
'id' => 9478138, 
'create_time' => 1394760725 
), 
2 => Array( 
'id' => 9478138, 
'create_time' => 1394760725 
) 
); 
$test2 = array( 
0 => array( 
'id' => 9478137, 
'message' => 'love you' 
), 
1 => array( 
'id' => 9478138, 
'message' => 'miss you' 
) 
);

如果要将这两个数组,类似于sql中的left join 关联起来我们用什么函数呢?额我没有找见就自己写了
刚开始的时候,用的是嵌套循环:效率低下
function _mergerArray($array1, $array2, $field1, $field2 = '') { 
$ret = array(); 
foreach($array1 as $key1 => $value1 ) { 
foreach ($array2 as $key2 => $value2) { 
if($value1[$field1] == $value2[$field2]) { 
$ret[$key1] = array_merge($value1, $value2); 
} 
} 
} 
return $ret; 
}

改进后的办法,使用数组下标,使用两次循环:形成类似于left join的方式
$test1 = Array( 
0 => Array( 
'id' => 9478137, 
'create_time' => 1394760724 
), 
1 => Array( 
'id' => 9478138, 
'create_time' => 1394760725 
), 
2 => Array( 
'id' => 9478138, 
'create_time' => 1394760725 
) 
); 
$test2 = array( 
0 => array( 
'id' => 9478137, 
'message' => 'love you' 
), 
1 => array( 
'id' => 9478138, 
'message' => 'miss you' 
) 
); function _mergerArray($array1, $array2, $field1, $field2 = '') { 
$ret = array(); 
//使用数组下标的办法 
foreach ($array2 as $key => $value) { 
$array3[$value[$field1]] = $value; 
} 
foreach ($array1 as $key => $value) { 
$ret[] = array_merge($array3[$value[$field1]], $value); 
} 
return $ret; 
} 
$ret = _mergerArray($test1, $test2, 'id', 'id'); 
print_r($ret);exit;

打印出来结果如下:
Array 
( 
[0] => Array 
( 
[id] => 9478137 
[message] => love you 
[create_time] => 1394760724 
) 
[1] => Array 
( 
[id] => 9478138 
[message] => miss you 
[create_time] => 1394760725 
) 
[2] => Array 
( 
[id] => 9478138 
[message] => miss you 
[create_time] => 1394760725 
) 
)

相当于left join了吧?
PHP 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
php 魔术函数使用说明
Feb 21 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
php输出反斜杠的实例方法
Sep 19 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 #PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 #PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 #PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 #PHP
PHP的password_hash()使用实例
Mar 17 #PHP
PHP5各个版本的新功能和新特性总结
Mar 16 #PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 #PHP
You might like
PHP多进程通信-消息队列使用
2019/03/08 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
如何判断图片地址是否失效
2007/02/02 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Python读写压缩文件的方法
2020/07/30 Python
用 python 进行微信好友信息分析
2020/11/28 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
硕士研究生求职自荐信范文
2014/03/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
司法建议书范文
2014/05/13 职场文书
社团活动总结书
2014/06/27 职场文书
财产分割协议书范本
2014/11/03 职场文书
西游记读书笔记
2015/06/25 职场文书
道士塔读书笔记
2015/06/30 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP