语法
php的数组分析
首先,php的数组是键值对,不像python或者有些语言,数组的索引是自增的,php的数组没有索引,是键,这样就和有些语言中的字典很像。
键(key)只能是整数或者字符串,不能是别的数据类型
值(value)可以使任意类型的值,比如数组,整数,浮点数什么的。
语法
<?php
// 较老版本的写法
$array = array(
"a" => "a",
1 => "b",
);
// PHP5.4以后的写法
$array = [
"a" => "apple",
"b" => "banana",
3 => "computer",
"4" => "four",
]
?>
PHP定义一个数组的语法就是示例代码中的那样,要注意的就是版本的问题,PHP5.4以后的版本就不用再写array了,并且用的是方括号
如果数组中多个元素都使用了同样的键名,那么,只有保留最后一个键值对,前面的全部被覆盖
类型强制转换
PHP的数组会对KEY的值进行强制的类型转换:
字符串:包含合法整形的字符串会被转换为整形。例如上面示例代码中的”4”,但是如果是”04”就不会进行强制转换,因为04不是一个合法的十进制数。
浮点数:浮点数也会被转换为整形,不是四舍五入, 只保留整数部分,小数部分无论大小都会被舍去。
NULL:NULL会被转换为空字符串,也就是“”。
布尔值:布尔值也会被转换成整形,true转换为1,false当然就是0了。
数组和对象:数组和对象不能用作键名。
不定义键名的数组
key 为可选项。如果未指定,PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名。
PHP中文文档中的一段文字。说的是一个数组中,有的元素定义了KEY,有的元素没有定义KEY,针对没有定义KEY的元素的处理方式。
一个键名都没有定义的数组,使用索引。(这才像原汁原味的数组)
$array = array("a", "b", "c", "c");
// 或者
$array = ["a", "b", "c", "d"];
还有这种操作:
$array = array(
"a",
"b",
"c",
8 => "d",
"e",
)
注意这个数组的索引,a,b,c的索引都是正常的0, 1, 2,到了d的时候,自定了KEY的值为8,那么e的KEY值就是9,KEY如果未指定,PHP将自动使用之前用过的最大integer键名加上1作为新的键名, 所以e的KEY值是9