Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:所有不常用的数组函数,一定要多看看,要用到的时候能想起来有这样一个函数。
栈:后进先出(LIFO-last in first out):最后插入的元素最先出来
栈的插入操作array_push()
叫做进栈,删除操作array_pop()
叫做出栈。
//定义一个数组
$stack = [1,2,3];
array_push()
// 进栈操作:在数组尾部添加元素,返回数组新的长度
echo '数组新的长度:'.array_push($stack, 4, 5, 6).'<br>';
// 输出:6
print_r($stack);
// 打印新数组:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
array_pop()
//出栈操作:第1次删除最后一个元素,返回最后删除元素(先进后出)
echo '第1次出栈:'.array_pop($stack).'<br>';
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
//第2次出栈
echo '第2次出栈:'.array_pop($stack).'<br>';
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
//第3次出栈
echo '第3次出栈:'.array_pop($stack).'<br>';
// Array ( [0] => 1 [1] => 2 [2] => 3 )
//.....如果数组是空的,或者非数组,将返回 NULL。
先进先出(FIFO-first in first out):最先插入的元素最先出来。
在具体应用中通常用链表或者数组来实现;
队列只允许在后端进行插入操作array_unshift()
,在前端进行删除操作array_shift()
。
//定义一个数组
$queue = [1,2,3];
array_unshift()
// 向数组插入多个新元素。插入的值将按顺序放置到数组的开头
echo array_unshift($queue,4,5,6);
// 输出:6
print_r($queue);
// 打印新数组:Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 1 [4] => 2 [5] => 3 )
array_shift()
//取出队列操作:第1次删除首元素,返回删除首元素(先进先出)
echo '第1次取出队列首元素:'.array_shift($queue).'<br>';
// Array ( [0] => 5 [1] => 6 [2] => 1 [3] => 2 [4] => 3 )
//第2次出栈
echo '第2次取出队列首元素:'.array_shift($queue).'<br>';
// Array ( [0] => 6 [1] => 1 [2] => 2 [3] => 3 )
//第3次出栈
echo '第3次取出队列首元素::'.array_shift($queue).'<br>';
// Array ( [0] => 1 [1] => 2 [2] => 3 )
//定义一个数组
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
//方法1:循环得到键名
while ( key($arr)) {
$arr_key[] = key($arr);
next($arr);
}
print_r($arr_key);
//输出: Array ( [0] => id [1] => name [2] => age [3] => email )
array_keys()
函数更加方便
//方法2:使用 array_keys() 函数
$arr_key=array_keys($arr);
print_r($arr_key);
//输出: Array ( [0] => id [1] => name [2] => age [3] => email )
//方法1:循环得到所有值
foreach ($arr as $value) {
$values[] = $value;
}
print_r($values);
//输出:Array ( [0] => 100 [1] => 小明 [2] => 18 [3] => xiaomin@php.cn )
array_values()
函数得到所有值:
//方法2:使用 array_values() 函数
$values=array_values($arr);
print_r($values);
//输出:Array ( [0] => 100 [1] => 小明 [2] => 18 [3] => xiaomin@php.cn )
array_key_exists()
函数
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
echo array_key_exists('name', $arr) ? '存在' : '不存在';
//输出:存在
echo array_key_exists('status', $arr) ? '存在' : '不存在';
//输出:不存在
array_key_first()
函数
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
echo array_key_first($arr);
// 输出:id
array_key_last()
函数
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
echo array_key_last($arr);
// 输出:email
array_search()
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
echo array_search('小明', $arr) ? array_search('小明', $arr) : '没找到对应键名';
// 输出:name
echo array_search('admin', $arr) ? array_search('admin', $arr) : '没找到对应键名';
// 输出:没找到对应键名
in_array()
$arr = ['id'=>100,'name'=>'小明','age'=>18,'email'=>'xiaomin@php.cn'];
echo in_array('小明', $arr) ? '有' : '没有';
//输出:有
echo in_array('小花', $arr) ? '有' : '没有';
//输出:没有
数组函数太多了,最重要的是理解,这里仅对常用的演示,其它线下慢慢练习吧。