学科分类
目录
PHP基础

数组的使用

1. 定义数组

在使用数组前,首先需要定义数组,PHP中通常使用如下两种方式定义数组:array()语法结构、短数组定义法。下面分别对其使用方式进行详细介绍。

(1)array()语法结构

使用array()语法结构定义数组,就是将数组的元素作为参数,各元素间使用逗号“,”分隔,示例代码如下。

   $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');

(2)短数组定义法

短数组语法([ ])与array()语法结构的使用方式相同,只需将array()替换为“[ ]”即可,示例代码如下。

 1  $info = ['id' => 1, 'name' => 'Tom'];
 2  $num = [1, 4, 7, 9];

在了解数组的两种定义方式后,下面看一下在定义数组时需要注意的3个要点。

① 数组元素的下标只有整型和字符串两种类型,如果有其他类型,则会进行类型转换。
② 在PHP中合法的整数值下标会被自动的转换为整型下标。
③ 若数组存在相同的下标时,后面的元素值会覆盖前面的元素值。

2. 新增数组元素

新增数组元素就是创建一个数组变量,然后使用赋值运算符直接给变量赋值,示例代码如下。

   $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] = '网页平面'

从上述代码可以看出,当不指定数组的“键”时,默认“键”从“0”开始,依次递增。但当指定索引时,PHP会自动的将前面最大的整数下标加1,作为该元素的下标。

3. 访问数组

由于数组中的元素是由键和值组成的,而键又是数组元素的唯一标识,因此可以使用数组元素的键来获取该元素的值,示例代码如下。

 1  $info = ['id' => 1, 'name' => 'Tom'];
 2  echo $info['name'];   // 输出结果:Tom

如果数组中的元素比较多时,使用以上方式查看数组中的元素会很烦琐。为此,PHP提供了print_r()和var_dump()函数,专门用于输出数组中的所有元素。其中,print_r()函数可以按照一定的格式显示数组的键和值,而var_dump()函数不仅具有print_r()函数的功能,还可以获取数组中元素的个数和数据类型,示例代码如下。

   $info = ['id' => 1, 'name' => 'Tom'];
   // 输出结果:Array ( [id] => 1 [name] => Tom )
   print_r($info);
   // 输出结果:array(2) { ["id"]=> int(1) ["name"]=> string(3) "Tom" }
   var_dump($info);

4. 删除数组

PHP中提供的unset()既可以删除数组中的某个元素,又可以删除整个数组。也可以用来删除普通变量,示例代码如下。

   $fruit = ['apple', 'pear'];
   unset($fruit[1]);
   print_r($fruit);  // 输出结果:Array ( [0] => apple ) 
   unset($fruit);
   print_r($fruit);  // 输出结果:Notice: Undefined variable: fruit...

​ 在上述代码中,当将$fruit数组删除后,在使用print_r()函数对其输出时,从输出结果可以看出,该数组已经不存在了。需要注意的是,删除元素后,数组不会再重建该元素的索引。

5. 判断数组元素是否存在

与unset()相对的还有一个isset(),它用来判断某个变量或数组中的某个元素是否存在,返回结果为布尔值,示例代码如下。

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

在开发中,如果不判断数组元素是否存在,直接使用数组中的某个元素,PHP会报Notice错误。因此,在开发中推荐使用isset()或“??”运算符判断数组元素是否存在。

点击此处
隐藏目录