数组

数组是可以在 PHP 脚本中定义的数据集。数组可以包含其他数组(因此可以构建多维数组)。数组也可以称为表(tables)或哈希(hashes)。

语法

数组可以通过两种方式创建。第一种是使用 array() 函数,第二种是使用方括号 []

array() 函数方法

在使用 array() 函数的方法中,您可以像这样创建数组:

$foo = bar();

例如,要创建一个顺序编号的数组(例如 "0, 1, 2, 3"),可以这样做:

$foobar = array($foo, $bar);

这将生成如下数组:

$foobar[0] = $foo;
$foobar[1] = $bar;

您也可以定义键值:

$foobar = array('foo' => $foo, 'bar' => $bar);

这将生成如下数组:

$foobar['foo'] = $foo;
$foobar['bar'] = $bar;
方括号方法

方括号方法允许直接设置数组的值。例如,要将 $foobar[1] = $foo,您只需这样做:

$foobar[1] = $foo;

同样,设置键值时也可以这样做:

$foobar['foo'] = $foo;

数组示例

示例 #1

以下示例设置并打印数组:

<?php
  $array = array("name" => "Toyota", "type" => "Celica", "colour" => "black", "manufactured" => "1991");
  $array2 = array("Toyota", "Celica", "black", "1991");
  $array3 = array("name" => "Toyota", "Celica", "colour" => "black", "1991");
  print_r($array);
  print_r($array2);
  print_r($array3);
?>

PHP 输出:

Array
(
  [name] => Toyota
  [type] => Celica
  [colour] => black
  [manufactured] => 1991
)
Array
(
  [0] => Toyota
  [1] => Celica
  [2] => black
  [3] => 1991
)
Array
(
  [name] => Toyota
  [0] => Celica
  [colour] => black
  [1] => 1991
)

HTML 渲染:

Array ( [name] => Toyota [type] => Celica [colour] => black [manufactured] => 1991 )
Array ( [0] => Toyota [1] => Celica [2] => black [3] => 1991 )
Array ( [name] => Toyota [0] => Celica [colour] => black [1] => 1991 )

示例 #2

下面的示例将输出与示例 #1 相同的文本:

<?php
  $array['name'] = "Toyota";
  $array['type'] = "Celica";
  $array['colour'] = "black";
  $array['manufactured'] = "1991";

  $array2[] = "Toyota";
  $array2[] = "Celica";
  $array2[] = "black";
  $array2[] = "1991";

  $array3['name'] = "Toyota";
  $array3[] = "Celica";
  $array3['colour'] = "black";
  $array3[] = "1991";

  print_r($array);
  print_r($array2);
  print_r($array3);
?>

示例 #3

使用示例 #1 和 #2,您现在可以像使用常规变量一样使用数组:

<?php
  echo "Manufacturer: {$array['name']} \n";
  echo "Brand: <b>{$array2['1']}</b><br />\n";
  echo "Colour: <b>".$array3['colour']."</b><br />\n";
  echo "Year Manufactured: <b>".$array3[1]."</b><br />\n";
?>

PHP 输出:

Manufacturer: Toyota
Brand: <b>Celica</b><br />
Colour: <b>black</b><br />
Year Manufactured: <b>1991</b><br />

HTML 渲染:

Manufacturer: Toyota
Brand: Celica
Colour: black
Year Manufactured: 1991

多维数组

数组中的元素也可以是数组,从而形成多维数组。以下是一个示例:

<?php
$cars = array(
  "car1" => array("make" => "Toyota", "colour" => "Green", "year" => 1999, "engine_cc" => 1998),
  "car2" => array("make" => "BMW", "colour" => "RED", "year" => 2005, "engine_cc" => 2400),
  "car3" => array("make" => "Renault", "colour" => "White", "year" => 1993, "engine_cc" => 1395),
);
?>

如果使用以下代码:

<?php
  echo "$cars['car1']['make']<br>";
  echo "$cars['car3']['engine_cc']";
?>

输出将会是:

Toyota
1395

数组函数

PHP 提供了大量的数组操作函数。在实现自己的数组操作之前,请确保该功能未作为 PHP 内置函数存在(可以查阅 PHP 手册中的 Array functions)。

排序

示例:

$array = array("name"=>"Toyota", "type"=>"Celica", "colour"=>"black", "manufactured"=>"1991");

array_multisort($array, SORT_ASC);
var_dump($array);

输出:

array(4) { 
  ["manufactured"]=> string(4) "1991" 
  ["type"]=> string(6) "Celica" 
  ["name"]=> string(6) "Toyota" 
  ["colour"]=> string(5) "black" 
}

以下是更多排序函数:

arsort($array);
var_dump($array);

asort($array);
var_dump($array);

sort($array);
var_dump($array);

数组遍历

在不同情况下,您可能需要访问数组的每个元素并对其进行处理。最简单且最常用的方法是使用 foreach 操作符,该操作符会遍历整个数组并逐一处理每个键/值对。如果需要更复杂的遍历方式,可以使用以下函数,这些函数使用数组的内部指针:

  • reset - 将内部指针设置为第一个元素并返回该元素
  • prev - 将内部指针设置为前一个元素并返回该元素
  • current - 返回当前元素,但不改变内部指针
  • next - 将内部指针设置为下一个元素并返回该元素
  • each - 返回当前元素,并将内部指针移到下一个元素
  • end - 将内部指针设置为最后一个元素并返回该元素
// 使用数组的迭代器反向打印其值
$my_array = array('a', 'b', 'c');
end($my_array);
while ($i = current($my_array)) {
  echo $i."\n";
  prev($my_array);
}

另一种可能性是定义一个函数,并通过以下函数将其应用于数组的每个元素:

  • array_walk - 对每个数组元素应用一个函数
  • array_walk_recursive - 如果元素本身是数组,则递归遍历该数组

外部链接

Last modified: Thursday, 9 January 2025, 10:12 PM