Php 简明教程

PHP - Arrays

数组是一个数据结构,它在一个变量中存储一个或多个数据值,它们之间存在某种关系。例如,如果你想存储一个班级里 10 个学生的成绩,那么你可以定义一个长度为 10 的数组,而不是定义 10 个不同的变量。

PHP 中的数组的行为与 C 中的数组略有不同,因为 PHP 是一个动态类型语言,而 C 是一个静态类型语言。

  1. PHP 中的数组是一个有序的映射,它将值与键相关联。

  2. PHP 数组可用于实现不同的数据结构,例如堆栈、队列、列表(向量)、哈希表、字典等。

  3. 数组元素的值部分可以是其他数组。这个事实可以用来实现树数据结构和多维数组。

在 PHP 中声明数组有两种方法。一种是使用内置 array() 函数,另一种是使用更短的语法,其中数组元素放在方括号内。

The array() Function

内置 array() 函数使用提供给它的参数并返回数组类型对象。一个或多个以逗号分隔的参数是数组中的元素。

array(mixed ...$values): array

括号中的每个值可以是单个值(可能是数字、字符串、任何对象,甚至另一个数组),或键值对。键与其值之间的关联由“⇒”符号表示。

Examples

$arr1 = array(10, "asd", 1.55, true);
$arr2 = array("one"=>1, "two"=>2, "three"=>3);
$arr3 = array(
   array(10, 20, 30),
   array("Ten", "Twenty", "Thirty"),
   array("physics"=>70, "chemistry"=>80, "maths"=>90)
);

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(称为数组索引)访问。

  1. Indexed Array - 仅含有一系列值的数组称为索引数组。每个值通过从“0”开始的位置索引进行标识。值以线性方式存储和访问。

  2. Associative Array - 如果数组是键值对的集合,则称其为关联数组。对的键组件可以是数字或字符串,而值部分可以是任何类型。关联数组按键值(而不是在严格的线性索引顺序中)存储元素值。

  3. 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)
  }
}

Accessing the Array Elements

要从给定的数组访问任何元素,可以使用数组[键] 语法。

Example

对于索引数组,将索引放到方括号中,因为索引本身就是键。

<?php
   $arr1 = [10, 20, 30];
   $arr2 = array("one"=>1, "two"=>2, "three"=>3);

   var_dump($arr1[1]);
   var_dump($arr2["two"]);
?>

它将生成以下 output

int(20)
int(2)

我们将在后续章节中更详细地探讨 PHP 数组的类型。