首页 > PHP > PHP数组进一步理解

PHP数组进一步理解

来源:原创 作者:thomas 分类:PHP 阅读:651 日期:2014-05-22

整个PHP数组就是一个大的hash表,并对keys建立了索引。

PHP中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

key 可以是 integer 或者 string。value 可以是任意类型。

此外 key 会有如下的强制转换:

包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值(负数也可以作为数组键名)。

浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。

布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。

Null 会被转换为空字符串,即键名 null 实际会被储存为 ""(空串""可作为数组键名)。

数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。

如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。

方括号和花括号可以互换使用来访问数组单元(例如 $array[42] 和 $array{42} 在上例中效果相同)。

十日谈技术博客

示例:

<?php

$arr = array(1=>121, "foo"=>114);

var_dump($arr{1},  $arr{"foo"});

PHP数组的间接引用:

<?php

function getArray() {

   return array(1, 2, 3);

}

// on PHP 5.4

$secondElement = getArray()[1];

unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。

注意:PHP的最大整数键名不一定就在当前数组中,它只要在数组生成索引后曾经存在过就行。如下例:

<?php

$arr = array(1,2,3,4,5,6);

var_dump($arr);

unset($arr[5]);

var_dump($arr);

$arr[] = 7;

var_dump($arr);

结果:

[root@yoyoko test]# php test.php

array(6) {

 [0]=> int(1)

 [1]=> int(2)

 [2]=> int(3)

 [3]=> int(4)

 [4]=> int(5)

 [5]=> int(6)

}

array(5) {

 [0]=> int(1)

 [1]=> int(2)

 [2]=> int(3)

 [3]=> int(4)

 [4]=> int(5)

}

array(6) {

 [0]=> int(1)

 [1]=> int(2)

 [2]=> int(3)

 [3]=> int(4)

 [4]=> int(5)

 [6]=> int(7)

}

 

热门文章 更多>

微信扫一扫,关注技术十日谈