PHP编程中foreach、while的性能比较

foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比

foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。
在循环里进行的是数组“读”操作,则foreach比while快:

网:http://www.veryhuo.com/

foreach ($array as $value) {
echo $value;
}

while (list($key) = each($array)) {
echo $array[$key];
}

在循环里进行的是数组“写”操作,则while比foreach快:

foreach ($array as $key => $value) {
echo $array[$key] = $value . ‘…’;
}

while (list($key) = each($array)) {
$array[$key] = $array[$key] . ‘…’;
}
总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很

快的,这是因为PHP采用的复制机制是“引用计数,写时复制”,也就是说,即便在PHP里复制一个变量,最初的形式从根本上说其实

仍然是引用的形式,只有当变量的内容发生变化时,才会出现真正的复制,之所以这么做是出于节省内存消耗得目的,同时也提升了

复制的效率。这样看来,foreach的高效读操作就不难理解了。另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结

论,多数情况下,类似foreach ($array as $key => $value)形式的做数组写操作得代码都应该被替换成while (list($key) =

each($array))。这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,一次请求动辄便会涉及到几

百几千几万次数组循环操作,差异就会明显放大。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » PHP编程中foreach、while的性能比较

156 评论

  1. tadalis 20mg without prescription avanafil 200mg ca order voltaren 50mg without prescription

  2. order avlosulfon 100 mg without prescription aceon 4mg canada purchase aceon online cheap

  3. buy tadalafil 5mg online cheap real cialis order sildenafil 50mg online

  4. brand furosemide 40mg doxycycline cheap order hydroxychloroquine 200mg generic

  5. generic cialis cost poker online play play slots for real money united states

  6. doxycycline 100mg sale cheap zovirax order zovirax 400mg for sale

  7. purchase avodart sale avodart uk buy xenical 60mg for sale

  8. alfuzosin online diltiazem drug buy diltiazem generic

  9. sildenafil professional viagra 25mg cialis 40mg sale

  10. order lipitor 10mg for sale lipitor canada order viagra 50mg

  11. order cialis for sale best ed pills top rated ed pills

  12. albuterol 2mg price augmentin cost buy synthroid 75mcg pills

  13. order doxycycline 100mg online cheap augmentin drug order augmentin 625mg generic

  14. albenza pills albendazole cost buy medroxyprogesterone 5mg generic

  15. purchase mebendazole pills tadalafil oral buy tadalis pills

  16. buy nolvadex 10mg pill cost budesonide cefuroxime 500mg ca

  17. furosemide order online doxycycline us cost albuterol

  18. order olmesartan 10mg generic benicar 20mg ca divalproex oral

  19. metoprolol 100mg tablet metoprolol online order methylprednisolone 4mg without a doctor prescription

  20. aristocort 10mg oral clarinex brand order claritin 10mg without prescription

  21. brand clopidogrel 75mg order coumadin coumadin 5mg brand

  22. budesonide generic careprost spray order careprost eye drops

  23. avodart 0.5mg oral mobic pill cost meloxicam

  24. buy imuran generic digoxin 250mg us how to get telmisartan without a prescription

  25. cheap erectile dysfunction cialis usa cialis for men

  26. buy cheap generic hytrin arava 10mg uk generic cialis cost

  27. buy lamivudine without prescription buy epivir generic buy accupril 10 mg generic

  28. zebeta tablet terramycin uk buy oxytetracycline 250 mg sale

  29. where to buy frumil without a prescription clindamycin price acyclovir for sale

评论已关闭

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡