PHP - 数组



数组是一种数据结构,它在一个变量中存储一个或多个具有某种关系的数据值。例如,如果您想存储一个班级中 10 个学生的成绩,那么与其定义 10 个不同的变量,不如定义一个长度为 10 的数组更容易。

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

  • PHP 中的数组是有序映射,它将值与键关联。

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

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

在 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 内部将上述任何类型都视为关联数组本身。对于索引数组,其中每个值都有索引,索引本身就是它的键。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[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 数组的类型。

广告