首页 > 编程笔记 > PHP笔记 阅读:3

PHP数组用法详解(附带实例)

当需要处理大批量的数据,如一个班级的所有学生数据、一个公司的所有员工数据等时,为了方便存储和操作这些数据,我们需要使用数组。

初识PHP数组

数组是用于存储一组数据的集合。数组中的数据称为数组元素,每个数组元素由键(Key)和值(Value)构成。其中,键用于唯一标识数组元素;值为数组元素的内容。

在 PHP 中,根据数组中键的数据类型,数组分为索引数组和关联数组,具体如下。

1) 索引数组

索引数组中元素的键的数据类型为整型。默认情况下,索引数组的键从 0 开始并依次递增,也可以自己指定索引数组的键。

索引数组示例如下图所示:


图 1 索引数组

2) 关联数组

关联数组中元素的键的数据类型为字符串型。

通常情况下,关联数组的键和值之间有一定的业务逻辑关系,经常使用关联数组来存储具有逻辑关系的数据。

关联数组示例如下图所示:


图 2 关联数组

在图 2 中,定义了一个用于保存个人信息的关联数组。从数组的结构可以看出,关联数组中键的数据类型都是字符串型,并且键与值之间是一一对应的关系。

除了根据数组中键的数据类型划分外,还可以根据数组的维数划分,即将数组分为一维数组、二维数组、三维数组等:
二维数组示例如下图所示:


图 3 二维数组

在图 3 中,二维数组由两个一维数组组成,第一行是二维数组的第一个元素,它的键为 0,值为第一个一维数组;第二行是二维数组的第二个元素,它的键为 1,值为第二个一维数组。

PHP数组的基本使用

在 PHP 开发中,经常需要使用数组来存储和操作数据,因此如何定义和使用数组是初学者首先需要掌握的内容。

1) 定义数组

在使用数组前需要先定义数组,通常使用 array() 语言构造器和短数组定义法两种方式定义数组。下面分别讲解这两种定义数组的方式。

使用 array() 语言构造器定义数组,将数组元素放在小括号“()”中,键和值之间使用“=>”连接,每个数组元素之间使用逗号“,”分隔。

定义索引数组时可以省略键和“=>”,PHP 会自动为索引数组添加从 0 开始的键,示例代码如下:
$info = array('id' => 1, 'name' => 'Tom');
$fruit = array(1 => 'apple', 3 => 'pear');
$num = array(1, 4, 7, 9);
$mix = array('tel' => 110, 'help', 3 => 'msg');

短数组定义法和 array() 语言构造器的使用方式相同,将 array() 替换为“[ ]”即可,示例代码如下:
$info = ['id' => 1, 'name' => 'Tom'];
$num = [1, 4, 7, 9];

了解了两种定义数组的方式后,在定义数组时还需要注意以下两点:

2) 新增数组元素

在 PHP 中,可以通过直接将值赋给数组变量来新增数组元素。

当不指定数组元素的键时,键默认从 0 开始,依次递增。当指定数组元素的键时,会使用指定的键。如果再次添加数组元素时没有指定键,PHP 会自动将数组元素的最大整数键加 1,作为该元素的键。

新增数组元素的示例代码如下:
$arr[] = 'PHP';       // 赋值结果:$arr[0] = 'PHP'
$arr[] = 'Java';      // 赋值结果:$arr[1] = 'Java'  
$arr[3] = 'C语言';     // 赋值结果:$arr[3] = 'C语言'
$arr[5] = 'C++';      // 赋值结果:$arr[5] = 'C++'
$arr['sub'] = 'iOS';  // 赋值结果:$arr['sub'] = 'iOS'
$arr[] = '网页平面';   // 赋值结果:$arr[6] = '网页平面'
在上述示例代码中,由于数组 $arr 中已经有了索引为 0、1、3、5 的元素,PHP 会自动找到最大的键(即 5)并加 1,将新增的数组元素“网页平面”赋值给 $arr 的第 6 个元素,即 $arr[6] = '网页平面'。

3) 访问数组元素

数组元素的键是数组元素的唯一标识,通过数组元素的键可以获取该元素的值,示例代码如下:
$info = ['id' => 1, 'name' => 'Tom'];
echo $info['id'];     // 输出结果:1
echo $info['name'];   // 输出结果:Tom

当数组中的元素比较多时,使用上述方式查看数组所有元素会很烦琐。此时可以使用输出语句 print_r() 或 var_dump() 输出数组中的所有元素,示例代码如下:
$info = ['id' => 1, 'name' => 'Tom'];
print_r($info);  // 输出结果:Array ( [id] => 1 [name] => Tom )
var_dump($info); // 输出结果:array(2) { ["id"]=> int(1) ["name"]=> string(3) "Tom" }

4) 删除数组元素

PHP 中提供的 unset() 语言构造器既可以删除数组中的某个元素,又可以删除整个数组,示例代码如下:
$fruit = ['apple', 'pear'];
unset($fruit[1]);
print_r($fruit); // 输出结果:Array ( [0] => apple )
unset($fruit);
print_r($fruit); // 输出结果:Warning: Undefined variable: $fruit…
在上述代码中,删除变量 $fruit 后,再使用 print_r() 函数输出该数组,会显示变量未定义的警告信息。

PHP判断数组元素是否存在

在使用数组中的某个元素时,如果元素不存在,运行程序会出现错误。

为了避免因为使用的数组元素不存在而导致程序出错,通常使用 isset() 语言构造器来判断数组中的元素是否存在,函数的返回值 true 表示数组中的元素存在,返回值 false 表示数组中的元素不存在。

示例代码如下:
$fruit = ['apple', 'pear'];
unset($fruit[1]);
var_dump(isset($fruit[1]));   // 输出结果:bool(false)

PHP遍历数组

遍历数组是指依次访问数组中的每个元素,通常使用 foreach 语句遍历数组,具体语法格式如下:
foreach (待遍历的数组 as $key => $value){
    循环体
}
在上述语法格式中,$key 是数组元素的键,$value 是数组元素的值。$key 和 $value 是变量名称,可以随意指定,如 $k 和 $v。

当不需要使用数组的键时,也可以写成如下形式:
foreach (待遍历的数组 as $value){
    循环体
}

使用 foreach 遍历数组,示例代码如下:
$fruit = ['apple', 'pear'];
foreach ($fruit as $key => $value) {
    echo $key . '-' . $value . ' ';   // 输出结果:0-apple 1-pear
}
在上述代码中,使用 foreach 语句遍历数组 $fruit,在每次循环过程中,将当前元素的键赋给 $key,将当前元素的值赋给 $value,并输出键和值。

相关文章