深入理解PHP原理之foreach
我们走得太快,灵魂都跟不上了 ...今天偶然看到鸟哥(php)的博客‘ 深入理解PHP原理之foreach’,可惜自己功力尚欠,内部的机理看不明白,但也稍微记录一下,毕竟这个问题自己以前从来没有考虑过。 #### 以下内容摘自鸟哥的博客 经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢? 比如:
1 |
|
又比如:
1 |
|
结果:
huixinchen 2007 2008
要完全了解清楚这个问题, 我想首先应该要大家了解PHP数组的内部实现结构………
在PHP中, 数组是用一种HASH结构(HashTable)来实现的, PHP使用了一些机制, 使得可以在O(1)的时间复杂度下实现数组的增删, 并同时支持线性遍历和随机访问.
说明
PHP中遍历数组的顺序, 是和元素的添加先后相关的;
所以, 如果你想在数字索引的数组中按照索引大小遍历, 那么你就应该使用for, 而不是foreach
1 | for($i=0,$l=count($arr); $i<$l; $i++) { |