跳转至内容

PHP 编程/数组

来自 Wikibooks,开放世界的开放书籍

数组是在 PHP 脚本中定义的一组数据。数组可以在其内部包含其他数组,没有任何限制(因此可以构建多维数组)。数组可以被称为表格或哈希表。

数组可以通过两种方式创建。第一种涉及使用 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 代码:

<?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 代码:

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

PHP 输出:

 Manufacturer: <b>Toyota</b><br />
  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 函数。

示例

$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" }
// The upper cases are sorted before the lowercases.

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

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

sort($array);
var_dump($array);
// array(4) { [0]=> string(4) "1991" [1]=> string(6) "Celica" [2]=> string(6) "Toyota" [3]=> string(5) "black" }

数组遍历

[编辑 | 编辑源代码]

在各种情况下,您需要访问每个数组元素并在其上执行任务。

最简单也是最常用的方法是foreach运算符,它循环遍历整个数组,并分别处理每个键/项对。如果需要更复杂的方法来遍历数组,以下函数使用内部数组指针进行操作:

  • reset - 将内部指针设置为第一个元素并返回第一个元素
  • prev - 将内部指针设置为前一个元素并返回它
  • current - 返回当前元素;不更改内部指针
  • next - 将内部指针设置为下一个元素并返回它
  • each - 返回当前元素;然后将内部指针设置为下一个元素
  • end - 将内部指针设置为最后一个元素并返回最后一个元素
<?php
// Using an array's iterator to print its values in reverse order
$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 - 相同,但如果元素本身是数组,它也会遍历该数组
[编辑 | 编辑源代码]


华夏公益教科书