background image

  
  while(list($key)=each($array)){
  
  $array[$key]=$array[$key].'...';
  
  }
  
  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))。这些技巧产生的速度差异在小项目里可能并不明显,
但是在类似框架这样的大项目中,一次请求动辄便会涉及到几百几千几万次数组循环操
作,差异就会明显放大。