php array_intersect比array_diff快(附详细的使用说明)
2015-01-24信息快讯网
在PHP中,使用 array_intersect 求两个数组的交集比使用 array_diff 求同样两个数组的并集要快。
如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) - count(array_intersect($a, $b)),而不要用 count(array_diff($a, $b));前面要比后者快,在大数组中更为明显。
1.array_intersect函数
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
#1 array_intersect() 例子
<?php $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2); ?> 这使得 $result 成为: Array ( [a] => green [0] => red )
2.自我实现的array_intersect()函数比php原函数array_intersect()快五倍
/** * * 自定义的array_intersect * 如果求的是一维数组的交集这个函数比系统的array_intersect快5倍 * * @param array $arr1 * @param array $arr2 * @author LIUBOTAO 2010-12-13上午11:40:20 * */ function my_array_intersect($arr1,$arr2) { for($i=0;$i<sizeof($arr1);$i++) { $temp[]=$arr1[$i]; } for($i=0;$i<sizeof($arr1);$i++) { $temp[]=$arr2[$i]; } sort($temp); $get=array(); for($i=0;$i<sizeof($temp);$i++) { if($temp[$i]==$temp[$i+1]) $get[]=$temp[$i]; } return $get; } $array1 = array("green", "red", "blue"); $array2 = array("green", "yellow", "red"); echo "<pre>"; print_r(my_array_intersect($array1, $array2)); echo "<pre/>";
array_diff ― 计算数组的差集
array array_diff ( array $array1 , array $array2 [, array $ ... ] )
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
#1 array_diff() 例子
<?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); ?>
在 $array1 中多次出现的值一样处理,输出结果为:
Array ( [1] => blue )
Note: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
Note: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。
mysqli_set_charset和SET NAMES使用抉择及优劣分析
PHP中header和session_start前不能有输出原因分析
PDO版本问题 Invalid parameter number: no parameters were bound
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
PHP中函数rand和mt_rand的区别比较
zend framework配置操作数据库实例分析
windows下zendframework项目环境搭建(通过命令行配置)
PHP提示Notice: Undefined variable的解决办法
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
巧用php中的array_filter()函数去掉多维空值的代码分享
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
php的array_multisort()使用方法介绍
php array的学习笔记
PHP include_path设置技巧分享
php header Content-Type类型小结
php设计模式 Decorator(装饰模式)
php设计模式 Strategy(策略模式)
php判断输入不超过mysql的varchar字段的长度范围
PHP array操作10个小技巧分享
php smarty 二级分类代码和模版循环例子
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
php smarty 二级分类代码和模版循环例子
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
php中在PDO中使用事务(Transaction)
php 数组排序 array_multisort与uasort的区别
php expects parameter 1 to be resource, array given 错误
array_multisort实现PHP多维数组排序示例讲解