PHP 数组

数组是一种集合的数据结构。在大部分的编程语言里,集合类型通常都是大于两种,常见如 列表、 哈希 等... 而在 PHP 里面,PHP 的数组既充当了列表的角色,也充当了哈希的角色,是一种独具特色的集合数据类型。


定义数组

例如我们有这样一个需求,我们想用一个变量,存储一个班级的同学信息,1号~蔡同学、 2号~陈同学、 3号~王同学 ... 这时我们就需要使用到数组这种数据结构。

// 定义数组
$students = array('1号'=>'蔡同学' , '2号'=>'陈同学', '3号'=>'王同学');

// 打印数组 | 数组的打印需要使用 print_r() 函数,我们可以得到下面这组信息
print_r($students); // Array ( [1号] => 蔡同学 [2号] => 陈同学 [3号] => 王同学 )

key | value

我们上面定义的数组,一个数组的单位有两部分组成,key 和 value,例如 '1号'=>'蔡同学' 这部分,key 就是 1号,value 就是 蔡同学。 通过 key 可以获取到 value。

// 1号同学的姓名
echo $students['1号']; // '蔡同学'

// 2号同学的姓名
echo $students['2号']; // '陈同学'

// 修改 3号 同学的姓名
$students['3号'] = '黄同学';
echo $students['3号'];

// 目前我们的 students 只有3组数据,如果我门想再增加一个? 可以通过下面这种方式:
$students['4号'] = '张同学';

print_r($students); 
// Array ( [1号] => 蔡同学 [2号] => 陈同学 [3号] => 王同学 [4号] => 张同学 )

默认的 key

如果我们定义数组的时候,没有指定 key,那么数组会自动为我们分配一个 key,从 0 开始。

$arr = ['a', 'b', 'c', 'd', 'e'];
print_r($arr); // Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )

echo $arr[0]; // a
echo $arr[3]; // d

foreach

如果一个数组很长很长,假设有 1万个 key=>value, 我们一个一个通过索引的获取就很费时间。 foreach 的作用就是用于循环打印数组,这样无论数组多次都是很方便的操作。

foreach($students as $key=>$value) {
	echo $key; 
	echo $value;

	// 第一次循环
	// 1号
	// 蔡同学

	// 第二次循环
	// 2号
	// 陈同学

	// ...
}

二维数组

二维数组的概念是在数组里面在套数组,理论上,这样的数组套数组的概念可以无限下去,也就是多维的数组,我们举下面的例子。

$students = array('1号'=>array('name'=>'蔡同学', 'age'=>17), '2号'=>array('name'=>'陈同学', 'age'=>18));

// 上面定义的二维数组,是这样的一种数据结构
Array
(
    [1号] => Array
        (
            [name] => 蔡同学
            [age] => 17
        )

    [2号] => Array
        (
            [name] => 陈同学
            [age] => 18
        )

)

// 同样的获取 key 也可以是二维的,我们获取 key 0 下面的 key 0
echo $students['1号']['name']; // '蔡同学'