PHP 之数组(遍历顺序)转自 Laruence
经常会有人问我
, PHP 的数组, 如果用
foreach
来访问
, 遍历的顺序是固定的么? 以什么顺序
遍历呢
?下面看 Laruence 整理的
经常会有人问我
, PHP 的数组, 如果用
foreach
来访问
, 遍历的顺序是固定的么? 以什么顺序
遍历呢
?
比如
:
代码如下
:
<?php
$arr
['laruence'] = 'huixinchen';
$arr
['yahoo'] = 2007;
$arr
['baidu'] = 2008;
foreach
(
$arr
as
$key
=>
$val
) {
//结果是什么?
}
又比如
:
代码如下
:
<?php
$arr
[2] = 'huixinchen';
$arr
[1] = 2007;
$arr
[0] = 2008;
foreach
(
$arr
as
$key
=>
$val
) {
//现在结果又是什么?
}
要完全了解清楚这个问题
, 我想首先应该要大家了解 PHP 数组的内部实现结构………
PHP 的数组
在
PHP 中, 数组是用一种 HASH 结构(HashTable)来实现的, PHP 使用了一些机制, 使得可以
在
O(1)的时间复杂度下实现数组的增删, 并同时支持线性遍历和随机访问.
之前的文章中也讨论过
, PHP 的 HASH 算法, 基于此, 我们做进一步的延伸.
认识
HashTable 之前, 首先让我们看看 HashTable 的结构定义, 我加了注释方便大家理解:
代码如下
:
typedef struct _hashtable {
uint nTableSize;
/* 散列表大小, Hash 值的区间 */