Php 简明教程
PHP - Arrays
数组是一个数据结构,它在一个变量中存储一个或多个数据值,它们之间存在某种关系。例如,如果你想存储一个班级里 10 个学生的成绩,那么你可以定义一个长度为 10 的数组,而不是定义 10 个不同的变量。
PHP 中的数组的行为与 C 中的数组略有不同,因为 PHP 是一个动态类型语言,而 C 是一个静态类型语言。
-
PHP 中的数组是一个有序的映射,它将值与键相关联。
-
PHP 数组可用于实现不同的数据结构,例如堆栈、队列、列表(向量)、哈希表、字典等。
-
数组元素的值部分可以是其他数组。这个事实可以用来实现树数据结构和多维数组。
在 PHP 中声明数组有两种方法。一种是使用内置 array() 函数,另一种是使用更短的语法,其中数组元素放在方括号内。
The array() Function
内置 array() 函数使用提供给它的参数并返回数组类型对象。一个或多个以逗号分隔的参数是数组中的元素。
array(mixed ...$values): array
括号中的每个值可以是单个值(可能是数字、字符串、任何对象,甚至另一个数组),或键值对。键与其值之间的关联由“⇒”符号表示。
Using Square Brackets [ ]
除了 array() 函数之外,还可以将以逗号分隔的数组元素置于方括号内以声明数组对象。在这种情况下,元素也可以是单个值、字符串或另一个数组。
$arr1 = [10, "asd", 1.55, true];
$arr2 = ["one"=>1, "two"=>2, "three"=>3];
$arr3 = [ [10, 20, 30],
["Ten", "Twenty", "Thirty"],
["physics"=>70, "chemistry"=>80, "maths"=>90] ];
Types of Arrays in PHP
有三种不同种类的数组,并且每个数组值都使用一个 ID(称为数组索引)访问。
-
Indexed Array - 仅含有一系列值的数组称为索引数组。每个值通过从“0”开始的位置索引进行标识。值以线性方式存储和访问。
-
Associative Array - 如果数组是键值对的集合,则称其为关联数组。对的键组件可以是数字或字符串,而值部分可以是任何类型。关联数组按键值(而不是在严格的线性索引顺序中)存储元素值。
-
Multi Dimensional Array - 如果索引数组或关联数组中的每个值本身是数组,则称其为多维数组。使用多个索引访问值。
NOTE - 内置数组函数在函数引用 PHP Array Functions 中给出。
值得注意的是,PHP 内部将上述任何类型都视为关联数组本身。对于索引数组(其中每个值具有索引),则索引本身就是其键。var_dump() 函数揭示了这一事实。
Example
在此示例中, arr1 是一个索引数组。但是,var_dump()(显示任何对象的结构化信息)显示每个值都具有索引作为其键。
<?php
$arr1 = [10, "asd", 1.55, true];
var_dump($arr1);
?>
它将生成以下 output −
array(4) {
[0]=>
int(10)
[1]=>
string(3) "asd"
[2]=>
float(1.55)
[3]=>
bool(true)
}
Example
对于多维索引数组也适用相同的原则,其中数组中的每个值都是另一个数组。
<?php
$arr1 = [
[10, 20, 30],
["Ten", "Twenty", "Thirty"],
[1.1, 2.2, 3.3]
];
var_dump($arr1);
?>
它将生成以下 output −
array(3) {
[0]=>
array(3) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
}
[1]=>
array(3) {
[0]=>
string(3) "Ten"
[1]=>
string(6) "Twenty"
[2]=>
string(6) "Thirty"
}
[2]=>
array(3) {
[0]=>
float(1.1)
[1]=>
float(2.2)
[2]=>
float(3.3)
}
}