
2007-5-21 10:18
php店小二
现学现卖了啊!高效----数组遍历
例如:
数组 $a,$b
$a、$b分别10000条记录
统计 $b中有多少记录在$a中
最高效的遍历方法是 将$a数组值和键交换
然后查询$b对应的值在$a中有没有对应的键存在
例如:
[code]$aa = array_flip($a);
foreach($b as $key=>$value)
{
if(isset($aa[$value]))....;
}
[/code]
希望能给喜欢用数组的人以帮助啊!
2007-5-21 11:54
木舟
10000 条记录这样循环一下, 效率估计也不高.
2007-5-21 14:47
php店小二
[quote]原帖由 [i]木舟[/i] 于 2007-5-21 11:54 发表
10000 条记录这样循环一下, 效率估计也不高. [/quote]
我刚好验证的是10000条记录
你可以试一下
如果是遍历数组的话要三、四秒
如果是采用上面的方法时间在一秒一内
当然具体时间长度要看你的机器了
2007-5-22 16:23
木舟
如果只是统计 $b中有多少记录在$a中 有更简单的方法.
2007-5-22 17:10
php店小二
[quote]原帖由 [i]木舟[/i] 于 2007-5-22 16:23 发表
如果只是统计 $b中有多少记录在$a中 有更简单的方法. [/quote]
是要遍历 $b 中的记录在不在 $a
2007-5-22 17:11
php店小二
如果如你所说
那你有什么更简单的方法?
请赐教!
:) :) :) :)
2007-5-22 18:31
木舟
取这两个数组的交集 count 一下多少条记录就出来了.
2007-5-23 12:56
php店小二
不错啊
高
2007-5-23 13:12
木舟
还有两个数组组合一下, 20000 减去新数组记录总数也行, 这些方法应该都比foreach 效率要高的多.
对程序进行处理时尽量多考虑下php的内置函数, 效果应该是高的多的.
2007-5-23 15:09
php店小二
[quote]原帖由 [i]木舟[/i] 于 2007-5-23 13:12 发表
还有两个数组组合一下, 20000 减去新数组记录总数也行, 这些方法应该都比foreach 效率要高的多.
对程序进行处理时尽量多考虑下php的内置函数, 效果应该是高的多的. [/quote]
这个倒是
但是内置函数效率也不尽一样
看实际情况
比如:file、fread==
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.