PHP还很常用,所以我研究了PHP序列的遍历。 在这里拿出来和大家分享,希望对大家有帮助。 关于PHP数组遍历,实际上很多人都在接受测试,如http://www.lilov.org/post/18.html,但这些讨论实际上太简单了。 在这里,我们将更全面地讨论这个问题。 看起来有点吹毛求疵,编写程序要有这样的思想,不断精益求精。 不是3360吗
首先,我很少说for、while和foreach如何遍历PHP数组。 不知道的事情可以自己去PHP官方查阅手册,但是用for、while、foreach遍历数组的写法也不同。 那么,效果如何? 接下来看就知道了。 程序可以通过上面链接中的Lilov编写的程序进行更改。 具体内容可以下载源文件并测试后改名。
测试一: PHP4.4.1,使用一维序列
号码
语句
时间
1
for($I=0; $I$num=count($arr ); $i )
0.1048162(s )。
2
for($I=0,$num=count ) $arr ); $i $num; $i )
0.0698998(s ) )。
3
wile(list ) $key,$val )=each ) $arr ) )
0.1437800(s )
4
while(list ),$val )=each ) $arr ) )
0.1226320(s ) )。
5
while(list($key,)=each ) $arr ) )
0.1119628(s ) )。
6
Foreach($arras$key=$val ) ) ) ) ) ) ) ) ) ) )。
是0.0972550(s )
7
($ arras $ val ) )。
0.0649691(s ) )。
在测试PHP4.4.1下,使用2位数组
号码
语句
时间
1
for($I=0; $I$num=count($arr ); $i )
0.0824819(s )。
2
for($I=0,$num=count ) $arr ); $i $num; $i )
是0.0523129(s )
3
wile(list ) $key,$val )=each ) $arr ) )
0.1273971(s ) )。
4
while(list ),$val )=each ) $arr ) )
是0.0961161(s )
5
while(list($key,)=each ) $arr ) )
0.1245570(s )。
6
Foreach($arras$key=$val ) ) ) ) ) ) ) ) ) ) )。
0.0764248(s )。
7
($ arras $ val ) )。
1.1415598(s )。
结果变化很大
最快的是2。 因为for不管理多维问题,所以一维数组的时间和速度没有太大变化。 (为什么比一维快呢,只能说这是受到了文件中运算的影响。 ) )这种影响确实存在。 在PEAR的Benchmark系上测试时,发现1次测试、100次、1000次得到的时间差异很大。 ) )。
接下来是6。 如同测试1所述,如果2不可用(也就是下标不连续),6肯定在***的选择中打破眼镜的是7,竟然是最慢的,而且比第二慢的慢10倍……这个问题实在让人费解。 之后,通过细致的测试,发现7这种方法主要受到元素数量的影响。 如果是第1维的10个元素的话,第2维的但是,如果1维1000个元素的2维元素超过3个,7就会比6慢很多。
【责任编辑: BZdsytel:(010 ) 68476606】
点赞0