破釜沉舟论坛 » WEB 开发 » 现学现卖了啊!高效----数组遍历

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.