PHP - 数组



数组是一种数据结构,它将一个或多个数据值存储在单个变量中,这些数据值之间具有某种关系。例如,如果你想在一个班级中存储 10 名学生的分数,那么定义一个 10 长度的数组很容易,而不是定义 10 个不同的变量。

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

  • PHP 中的数组是将值与键相关联的有序映射。
  • PHP 数组可用于实现不同的数据结构,例如堆栈、队列、列表(向量)、哈希表、字典等。
  • 数组元素的 value 部分可以是其他数组。这一事实可用于实现树数据结构和多维数组。

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

array() 函数

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


 array(mixed ...$values): array

括号中的每个值可以是单数值(可以是数字、字符串、任何对象甚至其他数组),也可以是键值对。键与其值之间的关联用 “=>” 符号表示。

例子


$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)
);

使用方括号 [ ]

除了 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] ];

PHP 数组类型

有三种不同类型的数组,每个数组值都使用称为数组索引的 ID 进行访问。

  • 索引数组 : 仅是值集合的数组称为索引数组。每个值都由从 “0” 开始的位置索引标识。值以线性方式存储和访问。
  • 关联数组 : 如果数组是键值对的集合,则将其称为关联数组。对的关键组件可以是数字或字符串,而值部分可以是任何类型。关联数组将元素值与键值相关联,而不是按严格的线性索引顺序存储。
  • 多维数组 : 如果索引数组关联数组中的每个值本身都是数组,则称为多维数组。使用多个索引访问值
注意: 函数参考 PHP 数组函数 中给出了内置数组函数

可能要注意的是,PHP 内部将上述任何类型本身视为关联数组。对于索引数组,其中每个值都有 index,则索引本身就是其键。var_dump() 函数揭示了这一事实。

例子

在此示例中,arr1 是一个索引数组。但是,var_dump() 显示任何对象的结构化信息,显示每个值都将其索引作为其键。


<?php
   $arr1 = [10, "asd", 1.55, true];
   var_dump($arr1);
?>

它将产生以下输出 -

array(4) {
  [0]=>
  int(10)
  [1]=>
  string(3) "asd"
  [2]=>
  float(1.55)
  [3]=>
  bool(true)
}

例子

同样的原则也适用于多维索引数组,其中数组中的每个值都是另一个数组。


<?php
   $arr1 = [
      [10, 20, 30], 
      ["Ten", "Twenty", "Thirty"],
      [1.1, 2.2, 3.3]
   ];

   var_dump($arr1);
?>

它将产生以下输出 -

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

访问 array 元素

要访问给定数组中的任何元素,你可以使用 array[key] 语法。

例子

对于索引数组,请将索引放在方括号内,因为索引本身无论如何都是键。


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

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

它将产生以下输出 -

int(20)
int(2)

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