您好,欢迎来到 256s

数组基础

admin 2023-06-17 次浏览 0
自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。Example #1 一个简单数组<?php$array = array(    "foo" => "bar...

自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。

Example #1 一个简单数组

<?php$array = array(    "foo" => "bar",    "bar" => "foo",
);// 自 PHP 5.4 起$array = [    "foo" => "bar",    "bar" => "foo",
];?>

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

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

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

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

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

  • Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。

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

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

Example #2 类型强制与覆盖示例

<?php$array = array(    1    => "a",    "1"  => "b",    1.5  => "c",    true => "d",
);
var_dump($array);?>以上例程会输出:array(1) {
  [1]=>  string(1) "d"}

上例中所有的键名都被强制转换为 1,则每一个新单元都会覆盖前一个的值,最后剩下的只有一个 "d"。

PHP 数组可以同时含有 integer 和 string 类型的键名,因为 PHP 实际并不区分索引数组和关联数组。

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。