PHP数组求差
example 1
function array_diff($array_1, $array_2) {
$diff = array();
foreach ($array_1 as $k => $v1) {
$flag = false;
foreach ($array_2 as $v2) {
if ($flag = ($v1 == $v2)) {
break;
}
}
if (!$flag) {
$diff[$k] = $v1;
}
}
return $diff;
}
example 2
function array_diff($array_1, $array_2) {
foreach ($array_1 as $key => $item) {
if (in_array($item, $array_2, true)) {
unset($array_1[$key]);
}
}
return $array_1;
}
example 3
function array_diff($array_1, $array_2) {
$array_2 = array_flip($array_2);
foreach ($array_1 as $key => $item) {
if (isset($array_2[$item])) {
unset($array_1[$key]);
}
}
return $array_1;
}
比较一下isset 与array_key_exists 的效率:
查找一个存在的key
//isset 与 array_key_exitsts的比较
for($i = 0 ;$i< 100000;$i++){
$arr['a'.$i] = 'A'.$i;
}
$time = microtime(1);
$a = isset($arr['a50000']);
$t1 = microtime(1) - $time;
$time = microtime(1);
$a = array_key_exists('a50000',$arr);
$t2 = microtime(1) - $time;
echo $t1;
echo "\n";
echo $t2;
exit;
输出:
----------PHP代码调试 ----------
4.10079956055E-005
1.4066696167E-005
输出完成 (耗时 5 秒) - 正常终止
查找一个不存在的:
//isset 与 array_key_exitsts的比较
for($i = 0 ;$i< 100000;$i++){
$arr['a'.$i] = 'A'.$i;
}
$time = microtime(1);
$a = isset($arr['a50000000000']);
$t1 = microtime(1) - $time;
$time = microtime(1);
$a = array_key_exists('a50000000000',$arr);
$t2 = microtime(1) - $time;
echo $t1;
echo "\n";
echo $t2;
exit;
输出:
----------PHP代码调试 ----------
4.31537628174E-005
1.19209289551E-005
输出完成 (耗时 0 秒) - 正常终止
结论:数组中检查一个key是否存在时,用isset 比array_key_exists 要快的多,
example 1
function array_diff($array_1, $array_2) {
$diff = array();
foreach ($array_1 as $k => $v1) {
$flag = false;
foreach ($array_2 as $v2) {
if ($flag = ($v1 == $v2)) {
break;
}
}
if (!$flag) {
$diff[$k] = $v1;
}
}
return $diff;
}
example 2
function array_diff($array_1, $array_2) {
foreach ($array_1 as $key => $item) {
if (in_array($item, $array_2, true)) {
unset($array_1[$key]);
}
}
return $array_1;
}
example 3
function array_diff($array_1, $array_2) {
$array_2 = array_flip($array_2);
foreach ($array_1 as $key => $item) {
if (isset($array_2[$item])) {
unset($array_1[$key]);
}
}
return $array_1;
}
比较一下isset 与array_key_exists 的效率:
查找一个存在的key
//isset 与 array_key_exitsts的比较
for($i = 0 ;$i< 100000;$i++){
$arr['a'.$i] = 'A'.$i;
}
$time = microtime(1);
$a = isset($arr['a50000']);
$t1 = microtime(1) - $time;
$time = microtime(1);
$a = array_key_exists('a50000',$arr);
$t2 = microtime(1) - $time;
echo $t1;
echo "\n";
echo $t2;
exit;
输出:
----------PHP代码调试 ----------
4.10079956055E-005
1.4066696167E-005
输出完成 (耗时 5 秒) - 正常终止
查找一个不存在的:
//isset 与 array_key_exitsts的比较
for($i = 0 ;$i< 100000;$i++){
$arr['a'.$i] = 'A'.$i;
}
$time = microtime(1);
$a = isset($arr['a50000000000']);
$t1 = microtime(1) - $time;
$time = microtime(1);
$a = array_key_exists('a50000000000',$arr);
$t2 = microtime(1) - $time;
echo $t1;
echo "\n";
echo $t2;
exit;
输出:
----------PHP代码调试 ----------
4.31537628174E-005
1.19209289551E-005
输出完成 (耗时 0 秒) - 正常终止
结论:数组中检查一个key是否存在时,用isset 比array_key_exists 要快的多,
作者:noel@淘宝网女装新款秋装连衣裙裤子外套上衣_2012时尚女装新款 Ecmall二次开发-PHP技术
地址:http://www.laohucheng.com/post/122/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!
PHP二分查找法应用之IP查找
js判断复选框checkbox数组是否被选中
2009
17:41
1927
0


