![PHP 7从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/97/26944097/b_26944097.jpg)
6.8 向数组中添加和删除元素
数组创建完成后,用户还可以继续添加和删除元素,从而满足实际工作的需要。
6.8.1 向数组中添加元素
数组是数组元素的集合。如果向数组中添加元素,就像往一个盒子里面放东西。这就涉及“先进先出”或是“后进先出”的问题。
● 先进先出,有点像排队买火车票。先进入购买窗口区域,购买完成之后再从旁边的出口出去。
● 后进先出,有点像给枪的弹夹上子弹。最后押上的那一颗子弹是要最先打出去的。
PHP对数组添加元素的处理使用push 、pop、shift和unshift函数来实现,可以实现先进先出,也可以实现后进先出。
下面通过实例介绍在数组前面添加元素,以实现后进先出。
【例6.10】(实例文件:ch06\6.10.php)
<? php $clients = array(’李丽丽’, ’赵大勇’, ’方芳芳’); array_unshift($clients, ’王小明’, ’刘小帅’); print_r($clients); ?>
运行结果如图6-11所示。
![](https://epubservercos.yuewen.com/7405AA/15367255204225006/epubprivate/OEBPS/Images/figure_0123_0001.jpg?sign=1739259485-ovlEzOk6uoa74Q0YjuH1g6N0VwKNRfrL-0-147374411f9d70094e09d30b738a0ab7)
图6-11 程序运行结果
【案例分析】
(1)数组$clients原本拥有3个数组元素。array_unshift()向数组$clients的头部添加了数组元素’王小明’、’刘小帅’。最后通过print_r()输出,通过其数字索引可以知道添加元素的位置。
(2)array_unshift()函数的格式为:
array_unshift(目标数组,[预添加数组元素,预添加数组元素,……])
同样通过以下实例介绍如何在数组后面添加元素,以实现先进先出。
【例6.11】(实例文件:ch06\6.11.php)
<? php $clients = array(’李丽丽’, ’赵大勇’, ’方芳芳’); array_push($clients, ’王小明’, ’刘小帅’); print_r($clients); ?>
运行结果如图6-12所示。
![](https://epubservercos.yuewen.com/7405AA/15367255204225006/epubprivate/OEBPS/Images/figure_0124_0001.jpg?sign=1739259485-NFa2DmmyCTSvoHjvj4gWDrL5mNYgdP00-0-4ebe98f17322018219dcf91f51bb9d34)
图6-12 程序运行结果
【案例分析】
(1)数组$clients原本拥有三个数组元素。array_push()向数组$clients的尾部添加了数组元素'王小明’、’刘小帅’。最后通过print_r()输出,通过其数字索引可以知道添加元素的位置。
(2)array_push()函数的格式为:
array_push(目标数组,[预添加数组元素,预添加数组元素,……])
push就是“推”的意思,这个过程就像排队的时候把人从队伍后面向前推。
6.8.2 从数组中删除元素
从数组中删除元素是添加元素的逆过程。PHP使用array_shift()和array_pop()函数分别从数组的头部和尾部删除元素。
下面的例子介绍如何在数组前面删除第一个元素并返回元素值。
【例6.12】(实例文件:ch06\6.12.php)
<? php $serivces = array(’洗衣’, ’订餐’, ’导游’, ’翻译’); $deletedserivces = array_shift($serivces); echo $deletedserivces."<br />"; print_r($serivces); ?>
运行结果如图6-13所示。
![](https://epubservercos.yuewen.com/7405AA/15367255204225006/epubprivate/OEBPS/Images/figure_0125_0001.jpg?sign=1739259485-1jc0ym3pzJ32Rbro9LHT3EgUyaNqMiuU-0-2121d29f9d019faf5c91520dbdd6d681)
图6-13 程序运行结果
【案例分析】
(1)数组$serivces原本拥有4个数组元素。array_shift()从数组$serivces的头部删除了第一个数组元素,并且直接把所删除的元素值返回,且赋值给变量$deletedserivces。最后通过echo输出$deletedserivces,并用print_r()输出$serivces。
(2)array_ shift()函数仅仅删除目标数组的头一个数组元素,格式如下:
array_ shift(目标数组)
以上为数字索引数组,如果是带键值的联合索引数组,它的效果相同,返回所删除元素的元素值。
同样,通过下面的实例介绍如何在数组后面删除最后一个元素并返回元素值。
【例6.13】(实例文件:ch06\6.13.php)
<? php $serivces = array('s1'=>’洗衣’, 's2'=>’订餐’, 's3'=>’导游’, 's4'=>’翻译’); $deletedserivces = array_pop($serivces); echo $deletedserivces."<br />"; print_r($serivces); ?>
运行结果如图6-14所示。
![](https://epubservercos.yuewen.com/7405AA/15367255204225006/epubprivate/OEBPS/Images/figure_0125_0002.jpg?sign=1739259485-jedpnXoBDbA8lSEoFj5TZ31VRgwipvrP-0-e2c59f2a5dddf0d8e241529b2c29bf25)
图6-14 程序运行结果
【案例分析】
(1)数组$serivces原本拥有4个数组元素。array_pop()从数组$serivces的尾部删除了最后一个数组元素,并且直接把所删除的元素值返回,且赋值给了变量$deletedserivces。最后通过echo输出$deletedserivces,以及用print_r()输出$serivces。
(2)array_ pop()函数仅仅删除目标数组的最后一个数组元素,格式如下:
array_ pop(目标数组)
这个例子中的数组是一个联合数组。