一、概念

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。

二、数组的创建

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。

1array(  key =>  value
2     , ...
3     )
4// 键(key)可是是一个整数 integer 或字符串 string
5// 值(value)可以是任意类型的值

最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。

注:
1、自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。
2、经常也会使用explode字符串分隔函数来创建数组。

示例:

 1<?php
 2$array = array(
 3    "foo" => "bar",
 4    "bar" => "foo",
 5);
 6// 自 PHP 5.4 起
 7$array = [
 8    "foo" => "bar",
 9    "bar" => "foo",
10];
11?>

注:key 为可选项。如果未指定,PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名。

如下例,通过var_dump函数输出数组:

 1<?php
 2$array = array(
 3         "a",
 4         "be",
 5    6 => "c",
 6         "dfg",
 7);
 8var_dump($array);
 9?>
10//输出结果为:
11array(4) {
12  [0]=>
13  string(1) "a"
14  [1]=>
15  string(2) "be"
16  [6]=>
17  string(1) "c"
18  [7]=>
19  string(3) "dfg"
20}

注:以上未指定key键,而通过数值递增出现的数组习惯上我们称之为数值数值(即每个元素都有一个数字ID键)。与之相对应的是关联数组(即在存储值时,通过key->vaule的方式对应)。如:

1$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

三、多维数组

多维数组可以理解为数组的嵌套,即数组里的元素也是一个数组。如:

 1<?php
 2$families = array
 3(
 4  "Griffin"=>array("Peter",  "Lois",  "Megan"),
 5  "Quagmire"=>array("Glenn"),
 6  "Brown"=>array("Cleveland",  "Loretta",  "Junior")
 7);
 8//var_dump($families);
 9print_r($families);
10?>
11//执行后其输出结果为:
12Array
13(
14    [Griffin] => Array
15        (
16            [0] => Peter
17            [1] => Lois
18            [2] => Megan
19        )
20    [Quagmire] => Array
21        (
22            [0] => Glenn
23        )
24    [Brown] => Array
25        (
26            [0] => Cleveland
27            [1] => Loretta
28            [2] => Junior
29        )
30)

四、修改数组内容

常用用来修改数组值的方法是用方括号的语法来修改数组:$arr[] = value ,如:

1$arr = array("a" => "视频", "b"=>"教程", "c" => "六");
2$arr['a']    = "运维";
3$arr['c']    = "之路";
4print_r($arr);

注:在向数组内增加元素时,经常会用到另外一个函数array_push()