您当前的位置: 首页 > 网站编程 > PHP教程 > PHP将两个关联数组合并函数提高函数效率

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

作者:不详 来源:网络 发布时间: 2014-07-31 18:25 点击:
在foreach中循环查询数据代码量比较少,但是性能比较低,使用下面的字节写的函数可以解决 在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了

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

  在foreach中循环查询数据代码量比较少,但是性能比较低,使用下面的字节写的函数可以解决

  在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将两个关联数组合并函数提高函数效率"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4