PHP数组与数据结构 array_pop() array_push() array_shift

zxh5566  2016-07-28 19:40   Hits: 

在强类型的编程语言中,有专用的数据结构解决方案,通常都是创建一个容器,在这个容器中可以存储任意类型的数组,并且可以根据容器中的数据决定容器的容量,达到可以变长的容器结构,比如链表,堆栈以及队列等都是数据结构中常用的形式,在PHP中,通常是使用数组来完成其他语言使用数据结构才能完成的工作,它是弱类型语言,在同一个数组中就可以存储多种类型的数据,而且PHP中的数组没有长度限制,数组存储数据的容量还可以根据里面元素个数的增减自动调整。

1、使用数组实现堆栈
堆栈是数据结构的一种实现技术,是使用非常广泛的存储数据的一种容器,在堆栈这种容器中,最后压入的数据,将会被最先弹出,在数据存储时采用先进后出的数据结构,在PHP中,将数组当做一个栈,使用array_push()和array_pop()两个系统函数即可完成数据的进栈和出栈操作,例如,把数组比喻成子弹夹,子弹比喻成数据,压入子弹相当于入栈,发射子弹相当于出栈。
array_push()函数向第一个参数的数组尾部添加一个或多个元素,然后返回新数组的长度,该函数等于多次调用$array[]=$value,该函数第一个参数为必选项,作为容器的一个数组,第二个参数也是必选的,在第一个参数中的数组尾部添加一个数据,还可以有多个可选参数,都可以添加到第一个参数的数组中的尾部,即入栈,但要注意即使数组中有字符串键名,添加的元素也始终是数字键。
<?php
$lamp = array("web");
echo array_push($lamp,'linux'); //返回数组元素个数
print_r($lamp);

?>

如果用array_push()给数组增加元素,还不如用$array[]=$value;形式,因为这样没有调用函数的额外负担,而且使用后者还可以添加键值是字符串的关联数组,如果第一个参数不是数组,array_push()将发出一条警告,这和$array[] = $value行为不同,后者会新建一个数组。
array_pop()函数删除数组中最后一个元素,即将数组最后一个单元弹出,并将数组的长度减1,如果数组为空将返回null,该函数只有一个参数,即作为栈的数组,返回弹出的数组中最后一个元素的值
<?php
$lamp = array('linux','apache','mysql','php');
echo array_pop($lamp);
print_r($lamp);
?>
2、使用数组实现队列

PHP中的数组处理函数还可以将数组实现队列的操作,堆栈是后进先出,而一个队列则允许在一端插入数据,在另一端删除数据,也就是实现最先进入队列的数据最先退出队列,就像银行的排号机最先排的号最先办理业务,即队列是先进先出原则
使用array_push()和array_pop()函数都是从数组的最后添加数据和删除数据,如果使用array_push()函数在数组的最后添加数据,而将数组中第一个元素删除就可以实现一个队列,函数array_shift()可以实现删除数组中的第一个元素,并返回被删除的值,该函数和array_pop()一样都是只有一个必选参数,其参数为实现队列的数组,将数组中第一个单元移除并作为结果返回,并将数组的长度减1,还将所有其他元素向前移动一位,所有的数字键名将改为从0开始计数,字符串键名保持不变,如果数组为空,则返回null
<?php
$lamp = array('a'=>'linux','b'=>'apache','c'=>'mysql','a'=>'php');
echo array_shift($lamp);
print_r($lamp);
?>
在PHP中可以使用array_unshift()函数在队列数组的开头插入一个或多个元素,该函数执行成功将返回插入元素个数,使用格式和函数array_push()是一样的

上一篇:PHP拆分合并分解结合数组array_slice()、array_splice
下一篇:PHP常用数组处理函数array_rand(),shuffle(),array_sum()