background image

 

foreach

(

$arrayas$key

=>

$value

){ 

echo

$array

[

$key

]=

$value

.'...'; 

while

(list(

$key

)=each(

$array

)){ 

$array

[

$key

]=

$array

[

$key

].'...'; 


 
总结:通常认为,

foreach

涉及到值复制,一定会比

while

慢,但实际上,如果仅仅是在

循环里进行数组的读操作,那么

foreach

是很快的,这是因为 PHP

采用的复制机制是 引

用复制,写时拷贝 ,这样看来,

foreach

的高效读操作就不难理解了。另外,既然

foreach

不适合处理数组写操作,那么我们可以得出一个结论,多数情况下,类似

foreach

(

$arrayas$key

=>

$value

)形式的代码都应该被替换成

while

(list(

$key

)=each(

$array

))

 

 
这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,
一次请求动辄便会涉及到几百几千几万次数组循环操作,差异就会明显放大。
 
有关 php 数组及循环的小例子,包括二维数组、杨辉三角、获取参数、矩形对角线求和,有
需要的朋友建议看看
 
代码如下: