PHP一些有用的技巧

1.比较俩数组差异,并返回包含处在第一个数组的差异的数组

$arr1=array();

$arr2=array();

方法1:原生array array_diff ( array array1, array array2 [, array ...] )

$result = array_diff($arr1,$arr2);

方法2:bool in_array ( mixed needle, array haystack [, bool strict] )

function array_diff_2($arr1,$arr2){

  $result = $arr1;

  foreach($arr1 as $key => $value ){

    if( in_array($value , $arr2 , true) ) {

       unset($result[$key]);

    }

  }

  return $result;

}

方法3:array array_flip ( array trans ) 返回键和值交换的数组

function array_diff_3($arr1,$arr2){

  $arr2_tmp = array_flip($arr2);

  $arr1_tmp = $arr1;

  foreach ($arr1 as $key => $value ) {

    if( isset($arr2_tmp[$value]) ) {

      unset($arr1_tmp[$key]);

    }

  }

  return $arr1_tmp;

}

大量数据对比用第三种方法效率最高。原理:把数组arr2的值转换成键.因为键是进行HASH组织的,查找很快,而value只是由key组织存放,本身没有索引,每次查找都是遍历。

参考资料:

http://bbs.chinaunix.net/viewthread.php?tid=938096

http://www.chinaunix.net/jh/27/1032441.html

 

2010-11-18 16:07
  如果你不同意别人的说法,至少不要和他人争执。
lcard
2010-11-18 17:09
@Nike SB:嗯,我还没到那种境界,还得继续潜心。
2010-11-10 14:46
真伤脑筋。。。。
2010-10-31 17:37
学习了!
待会修改东西去

另外你这里说3秒才能发表,但是3分钟都不能。
每次得重播宽带
lcard
2010-10-31 18:39
@GW:居然还有这毛病,奇遇的插件问题还是没解决。在解决前我先把插件彻底关掉吧,感谢GW兄拔网线都要评论的决心。
2010-10-27 20:50
你可是为我修改好多地方的,现在才算有模有样
lcard
2010-10-27 21:51
@学夫子:果酱
2010-10-27 11:19
这个,我是真的不懂,哈哈。不过也就是因为有了这些代码,才有我今天的博客啊,为在后面默默耕耘的卡片致敬!!
lcard
2010-10-27 12:21
@学夫子:你的是emlog,感谢不到我-。=
2010-10-27 02:34
哎...头疼
lcard
2010-10-27 03:36
@枫雪:那就忽略吧……
2010-10-26 23:49
坐沙发就是比板凳舒服,哈哈
lcard
2010-10-27 00:50
@绍兴seo:加油兄弟,以后seo会越来越猛

Top↑