栈与队列 数组的高级应用
栈:后进先出 (LIFO-last in first out ) 最后插入的元素先出
栈的插入操作:
//追加->进栈
array_push();
栈的删除操作:
//删除->出栈
array_pop();
-----------------------------------------------------
//array_push($array,$value1,$value2,……)语法:
$nums = [1,2,3,4];
$nums =array_push($nums,5,6,7);
print_r($nums);
//打印数组array(['0'=>1,'1'=>2,'2'=>3,'3'=>4,'4'=>5,'5'=>6,'6'=>7]);
-----------------------------------------------------
//array_pop($array) 语法:
$nums = [1,2,3,4];
array_pop($nums);
//第一次从$nums 尾部取出一个;
print_R($nums);
//打印:array(['0'=>1,'1'=>2,'2'=>3]);
//第一次从$nums 尾部再取出一个;
print_R($nums);
//打印:array(['0'=>1,'1'=>2);
//注意:当前数组如果没有值的情况下,返回null
什么是队列
先进先出(FIFO-first in first out )最先插入的元素最先出来,理解成就是,第一个元素先出来!
具体应用中通常用链表或是数组来实现;
对离只允许在后端进入插入操作, array_unshift() ,在前端进行删除操作array_shift()。
//定义数组;
/*
array_unshift($array,$value,value1……) 语法:
*/
$nums = [1,2,3,4];
array_unshift($nums,5,6);
print_r($nums);
//输出:array(['0'=5,'1'=>6,'2'=>1,'3'=>2,'4'=>3,'5'=>4]);
//array_shift()
/*
array_shift($array);语法:
*/
$nums = [1,2,3,4];
array_shift($nums);
print_r($nums);
//打印:array(['0'=>2,'1'=>3,'2'=>4]);
//每次从数组最开始的元素里面取一个删除,和array_pop一样,当数组不存在或是为空的时候返回的结果为NULL;
打起拉那么多,队列的用途:队列可以很好的异步处理数据传输和存储,当频繁的向数据库提交数据,就可以采用队列来异步插入
/*
有时候我们需要获取到数组的键,可以直接将数组的key获取到,传统的方法:、
$user = ['name'=>'张三','age'=>18];
while(key($user)){
$key_array[] = key($user);
next();
}
print_r($key_array);
//输出array([0]=>name,[1]=>18);
*/
//php中提供了一个更加方便的涵数:array_keys();
$user = ['name'=>'张三','age'=>18];
直接$key_array = array_keys($user);
print_r($key_array);
//输出array([0]=>name,[1]=>18);
既然有key操作,那肯定就有value操作咯,
有时候我们需要获取到数组的值,可以直接将数组的values获取到,传统的方法:、
$user = ['name'=>'张三','age'=>18];
foreach($user as $value){
$values[] = $value;
}
print_r($values);
//输出array(['name']=>张三,['age']=>18);
*/
//php中提供了一个更加方便的涵数:array_values();
$user = ['name'=>'张三','age'=>18];
//直接
$values = array_values($user);
print_r($values);
//输出array(['name']=>张三,['age']=>18);
说了那么多,系统还提供了其他的数组相关的涵数来。就列举几个常用的、
涵数 | 说明 |
---|---|
array_key_existe(key,array) | 检测数组中是否存在key名,key为必填,array为必填且只能是数组 |
array_key_first(array) | array为必填窃必须为数组,返回数组元素中第一个元素的键名 |
array_key_last(array) | array为必填窃必须为数组,返回数组元素中最后一个元素的键名 |
array_search(value,array) | array必填且必须是数组,value必填,查找的值,返回值对应的键名 |
is_array(value,array) | value必填,array为数组,检查数组中是否存在value的值,返回值为bool |