Home >php教程 >php手册 >PHP数组循环操作详细介绍

PHP数组循环操作详细介绍

WBOY
WBOYOriginal
2016-06-13 11:04:491005browse

PHP数组还是比较常用的,于是我研究了一下PHP数组循环操作,在这里拿出来和大家分享一下,希望对大家有用。PHP基本上就是一种数组语言。时常要进行大量的PHP数组循环操作,主要有两种方式,一种是foreach,另一种是while,到底哪种好哪种坏一直有争论,虽然我很早就意识到了这个问题,但是一直没有细究,懵懂的感觉一直持续到现在,为了以后能节省点CPU时间,下面总结一下:

在循环里进行的是数组“读”操作,则foreach比while快,PHP数组循环操作无格式查看复制到剪贴板打印代码?

<ol class="dp-xml">
<li class="alt"><span><span>foreach($arrayas$value){  </span></span></li>
<li class=""><span>echo$value;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>while(list($key)=each($array)){  </span></li>
<li class="alt"><span>echo$array[$key];  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>foreach($arrayas$value){  </span></li>
<li class=""><span>echo$value;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>while(list($key)=each($array)){  </span></li>
<li class="alt"><span>echo$array[$key];  </span></li>
<li class=""><span>} </span></li>
</ol>

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

无格式查看复制到剪贴板打印代码?

<ol class="dp-xml">
<li class="alt"><span><span>foreach($arrayas$</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$value){  </span></span></li>
<li class=""><span>echo$array[$key]=$value.'...';  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>while(list($key)=each($array)){  </span></li>
<li class="alt"><span>$array[$key]=$array[$key].'...';  </span></li>
<li class=""><span>}  </span></li>
<li class="alt">
<span>foreach($arrayas$</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$value){  </span>
</li>
<li class=""><span>echo$array[$key]=$value.'...';  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>while(list($key)=each($array)){  </span></li>
<li class="alt"><span>$array[$key]=$array[$key].'...';  </span></li>
<li class=""><span>} </span></li>
</ol>

总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很快的,这是因为PHP采用的复制机制是“引用复制,写时拷贝”,这样看来,foreach的高效读操作就不难理解了。另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结论,多数情况下,类似foreach($arrayas$key=>$value)形式的代码都应该被替换成while(list($key)=each($array))。

这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,一次请求动辄便会涉及到几百几千几万次数组循环操作,差异就会明显放大。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:讲述PHP递归算法Next article:经验总结PHP应用技巧