数组函数与数据结构《实现堆栈,实现队列》

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

1、使用数组实现堆栈html

堆栈是数据结构的一种实现形式,是一种使用很是普遍的存储数据的容器。在堆栈这种容器中,最后压入的数据(进桟),将会被最早弹出(出栈)。即在数据存储时采用“先进后出”的数据结构。在PHP中,将数组当作一个栈,使用array_push()和array_pop()两个系统函数便可完成数据的进桟和出栈操做。web

①函数array_push()数组

array_push()函数向第一个参数的数组尾部添加一个或多个元素(入栈),而后返回新数组的长度。该函数等于屡次调用$array[]=$value。其函数的原型以下:数据结构

int array_push(array &array ,mixed var [,mixed...])函数

该函数的第一个参数是必选的,做为栈容器的一个数组。第二个参数也是必选的,在第一个参数中的数组尾部添加的一个数据。还能够有多个可选参数,均可以添加到第一个参数的数组中的尾部,即入栈。但须要注意即便数组中有字符串键名,添加的元素也始终是数字键。函数array_push()使用的代码以下所示:学习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
     $a = array ( "Dog" , "Cat" );
     array_push ( $a , "Horse" , "Bird" );
     print_r( $a );          //输出Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )
 
     //带有字符串键的数组:
     $a = array ( "a" => "Dog" , "b" => "Cat" );
     array_push ( $a , "Horse" , "Bird" );
     print_r( $a );              //输出Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird )
 
     //使用array_push()函数和使用这种直接赋值初始化数组的方式是同样的
     $lamp [ "web" ]= "www" ;
     print_r( $a )          //输出Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird [web]=> www)
?>

若是用array_push()来给数组添加一个单元,还不如用“$array[]=$value”形式,由于这样没有调用函数的额外负担,并且使用后者还能够添加键值是字符串的关联数组。若是第一个参数不是数组,array_push()将发出一条警告。这和“$array[]=$value”的行为不一样,后者会新建一个数组。spa

②array_pop(array &array)code

array_pop函数删除数组中的最后一个元素,即将数组最后一个单元弹出(出栈),并将数组的长度减1,若是数组为空(或者不是数组)将返回NULL。其函数的原型以下:htm

mixed array_pop(array &array)

该函数只有一个参数,即做为栈的数据。返回弹出的数组中最后一个元素的值。函数array_pop()使用的代码以下所示:

1
2
3
4
5
6
7
<?php
     //声明一个数组做为栈
     $lamp = array ( "Linux" , "Apache" , "MySQL" , "PHP" );
 
     array_pop ( $lamp );
     print_r( $lamp )          //输出 array([0]=>Linux [1]=>Apache [2]=>MySQL)
?>

2、使用数组实现队列

PHP中的数组处理函数还可使用数组实现队列的操做。堆栈是“后进先出”原则,而一个队列则容许在一端插入数据,在另外一端删除数据,也就是实现最早进入队列的数据最早退出队列,就像银行的排号机,最早排好的号最早办理业务。即队列是“先进先出”的原则。

使用array_push()和array_pop()函数都是从数组的最后添加数据和删除数据,若是使用array_push()函数在数组的最后添加数据,而将数组中第一个元素删除就能够实现一个队列。

③函数array_shift()

函数array_shift()能够实现删除数组中的第一个元素,并返回被删除元素的值。其函数的原型以下:

mixed array_shift(array &array)

该函数和array_pop()函数同样,都是只有一个必选参数,其参数为实现队列的数组。将数组中第一个单元移出并做为结果返回,将数组的长度减1,还将全部其余元素向前移动一位。全部的数字键名将改成从0开始计数,字符串键名将保持不变。若是数组为空(或者不是数组),则返回NULL。函数array_shift()使用的代码以下所示:

1
2
3
4
5
6
7
8
9
10
<?php
     //带有字符串键值的关联数组
     $lamp = array ( "a" => "Linux" , "b" => "Apache" , "c" => "MySQL" , "d" => "PHP" );
     array_shift ( $lamp );       
     print_r( $lamp );            //输出:Array([b]=>Apache [c]=>MySQL [d]=>PHP)
 
     $lamp = array ( "Linux" , "Apache" , "MySQL" , "PHP" );
     array_shift ( $lamp );
     print_r( $lamp );            //数字下标从新索引Array([0]=>Apache [1]=>MySQL [2]=>PHP)
?>

④函数array_unshift()

在PHP中海可使用array_unshift()函数在队列数组的开头插入一个或多个元素,该函数执行成功将返回插入元素个数,使用格式和函数array_push()是同样的。经过前面介绍的这4个函数从而实现了从数组的任意一端添加和删除数据。

 
相关文章
相关标签/搜索