文章教程

7.7向数组中添加和删除元素

9/17/2020 9:40:31 PM 人评论 次浏览

7.7 向数组中添加和删除元素

数组创建完成后,用户还可以继续添加和删除元素,从而满足实际工作的需要。

7.7.1 向数组中添加元素

数组是数组元素的集合。如果向数组中添加元素,就像是往一个盒子里面放东西。这就牵扯到了“先进先出”或是“后进先出”的问题。

先进先出,有点像排队买火车票。先进到购买窗口区域的,购买完成之后从旁边的出口出去。

后进先出,有点像是给枪的弹夹上子弹,最后装上的那一颗子弹是要最先打出去的。

PHP对数组添加元素的处理使用push 、pop、shift和unshift函数来实现,可以实现先进先出,也可以实现后进先出。

下面的例子介绍在数组前面添加元素,以实现后进先出。

【例7.10】(实例文件:ch07\7.10.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>数组元素添加之后
进先出。</h2></HEAD>
  <BODY>
  <?php
     $clients = array('李丽丽','赵大勇','方芳芳');
     array_unshift($clients, '王小明','刘小帅');
     print_r($clients);
  ?>
  </BODY>
  </HTML>

运行结果如图7-11所示。

image

图7-11 程序运行结果

【案例分析】

(1)数组$clients原本拥有三个数组元素。array_unshift()向数组$clients的头部添加了数组元素'王小明'和'刘小帅'。最后通过print_r()输出,通过其数字索引可以知道添加元素的位置。

(2)array_unshift()函数的格式为:

  array_unshift(目标数组,[预添加数组元素,预添加数组元素,…])

同样的例子介绍在数组后面添加元素,以实现先进先出。

【例7.11】(实例文件:ch07\7.11.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>数组元素添加之先
进先出。</h2></HEAD>
  <BODY>
  <?php
     $clients = array('李丽丽','赵大勇','方芳芳');
     array_push($clients, '王小明','刘小帅');
     print_r($clients);
  ?>
  </BODY>
  </HTML>

运行结果如图7-12所示。

image

图7-12 程序运行结果

【案例分析】

(1)数组$clients原本拥有三个数组元素。array_push()向数组$clients的尾部添加了数组元素'王小明'和'刘小帅'。最后通过print_r()输出,通过其数字索引可以知道添加元素的位置。

(2)array_push()函数的格式为:

  array_push(目标数组,[预添加数组元素,预添加数组元素,…])

push的意思就是“推”的意思,这个过程就像是排队的时候把人从队伍后面向前推。

7.7.2 从数组中删除元素

从数组中删除元素是添加元素的逆过程。PHP使用array_shift()和array_pop()函数分别从数组的头部和尾部删除元素。

下面的例子介绍在数组前面删除第一个元素并返回元素值。

【例7.12】(实例文件:ch07\7.12.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>删除数组开头的第
一个元素。</h2></HEAD>
  <BODY>
  <?php
     $serivces = array('洗衣','订餐','导游','翻译');
     $deletedserivces = array_shift($serivces);
     echo $deletedserivces."<br />";
     print_r($serivces);
  ?>
  </BODY>
  </HTML>

运行结果如图7-13所示。

image

图7-13 程序运行结果

【案例分析】

(1)数组$serivces原本拥有4个数组元素。array_shift()从数组$serivces的头部删除了第一个数组元素,并且直接把所删除的元素值返回,且赋值给了变量$deletedserivces。最后通过echo输出$deletedserivces,以及用print_r()输出$serivces。

(2)array_ shift()函数仅仅删除目标数组的头一个数组元素。它的格式如下:

  array_ shift(目标数组)

以上例子为数字索引数组,如果是带键值的联合索引数组,它的效果相同,返回所删除元素的元素值。

同样的例子介绍在数组后面删除最后一个元素并返回元素值。

【例7.13】(实例文件:ch07\7.13.php)

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><h2>删除数组结尾的最
后一个元素。</h2></HEAD>
  <BODY>
  <?php
     $serivces = array('s1'=>'洗衣','s2'=>'订餐','s3'=>'导游','s4'=>'翻译');
     $deletedserivces = array_pop($serivces);
     echo $deletedserivces."<br />";
     print_r($serivces);
  ?>
  </BODY>
  </HTML>

运行结果如图7-14所示。

image

图7-14 程序运行结果

【案例分析】

(1)数组$serivces原本拥有4个数组元素。array_pop()从数组$serivces的尾部删除了最后一个数组元素,并且直接把所删除的元素值返回,且赋值给了变量$deletedserivces。最后通过echo输出$deletedserivces,以及用print_r()输出$serivces。

(2)array_ pop()函数仅仅删除目标数组的最后一个数组元素。它的格式如下:

  array_ pop(目标数组)

这个例子中的数组是一个联合数组。

教程类别