数组的使用
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()或“??”运算符判断数组元素是否存在。