数组相关处理函数
效果展示:
案例源码:
<?php
// 一、数组相关处理函数
// 1、key() 函数返回数组内部指针当前指向元素的键名
$arr = ['id'=>1987,'name'=>'fugen','email'=>'2017539632@qq,com'];
$keys = [];
echo key( $arr),'<br>';
next($arr);
echo key( $arr).'<br>';
next($arr);
echo key( $arr).'<br>';
//指针复位
reset( $arr).'<br>';
echo key( $arr).'<br>';
echo '<hr>';
// 2、array_keys()返回数组,数组成员是原数组的键名
$arr2 = ['id'=>1988,'name'=>'fugen','email'=>'2017539632@qq,com'];
print_r(array_keys( $arr));
echo '<hr>';
// 3、array_values()返回数组中所有的值(不保留键名),键值从0到1 递增
$arr3 = ['id'=>1988,'name'=>'fugen','email'=>'2017539632@qq,com'];
print_r(array_values($arr3));
echo '<hr>';
// 4、in_array()检测一个成员在不在指定的数组中,存在返回true 不存在返回false
$arr4 = ['id'=>1989,'name'=>'fugen','email'=>'2017539632@qq,com'];
var_dump(in_array('fugen',$arr4));
var_dump(in_array('xiaoer',$arr4));
echo '<hr>';
// 5、array_search() 不存在返回false,存在的话返回元素值对应的键名
$arr5 = ['id'=>1990,'name'=>'fugen','email'=>'2017539632@qq,com'];
var_dump(array_search(1989,$arr5));
var_dump(array_search(1990,$arr5));
echo '<hr>';
// 6、array_unique() 移除数组中重复的值
$arr6 = [1,2,3,4,5,5,6,8,8,7,9];
print_r(array_unique($arr6)).'<br>';
echo '<hr>';
// 7、array_sum() 返回数组中所有成员的和
$arr7 = [1,2,3,4,5,];
var_dump(array_sum($arr7)); //int(15)
echo '<hr>';
// 8、array_product() 返回数组中所有成员相乘的结果
$arr8 = [1,2,3,4,];
var_dump(array_product($arr8));//int(24)
echo '<hr>';
// 二、数组的拆分与合并
// 9、array_slice 从数组中去除一部分元素
$stu9 = ['id'=>1001,'name'=>'张福根','age'=>30,'course'=>'php'];
print_r(array_slice($stu9,1,1));//Array ( [name] => 张福根 )
echo '<hr>';
// 10、array_splice() 函数从数组中移除选定的元素,并用新元素取代它。
$stu10 = ['id'=>1001,'name'=>'张福根','age'=>30,'course'=>'php'];
//删除
print_r(array_splice($stu10,2,1));//Array ( [age] => 30 )
echo '<br>';
print_r($stu10);//Array ( [id] => 1001 [name] => 张福根 [course] => php )
echo '<hr>';
// 替换
$stu11 = [10,25,9,33,56,21,82,47];
print_r(array_splice($stu11,1,3,[777,888,999]));//Array ( [0] => 25 [1] => 9 [2] => 33 )
echo '<br>';
print_r($stu11 );
echo '<hr>';
//新增
$stu12 = ['张','福','根'];
array_splice($stu12,-1,3,array('在','家','里'));
print_r($stu12);
echo '<hr>';
// 11、extract() 将关联数组拆分成变量
// 使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
$config = ['type'=>'mysql','host'=>'localhost','dbname'=>'phpedu','charset'=>'utf=8'];
echo (extract($config));//4
echo '<br>';
echo $type, $host, $dbname, $charset;
echo '<hr>';
// 12、compact()创建一个包含变量名和它们的值的数组:
$id = 20201125;
$username = 'fugen';
$gender = "man";
$info = (compact('id','username','gender'));
print_r($info);
echo '<hr>';
// 三、栈与队列
// 栈:是一种特殊的线性表,是添加与删除受限的一种数据结构 LIFO,只能在固定的一端进行数据的添加与删除 last in first out
$footer = [1,2];
// array_push()在栈的尾部进行-增加
array_push($footer,10,20,30);
print_r($footer);//Array ( [0] => 1 [1] => 2 [2] => 10 [3] => 20 [4] => 30 )
echo '<br>';
// array_pop()在栈的尾部进行-删除
echo array_pop($footer);//30
echo '<br>';
print_r($footer);//Array ( [0] => 1 [1] => 2 [2] => 10 [3] => 20 )
echo '<hr>';
$header = [1,2];
// array_unshift()在栈的头部进行数据-增加
echo array_unshift($header,'fu','gen');//4
echo '<br>';
print_r($header);//Array ( [0] => fu [1] => gen [2] => 1 [3] => 2 )
echo '<hr>';
// array_shift()在栈的头部进行数据-删除
echo array_shift($header);//fu
echo '<br>';
echo array_shift($header);//fu
echo '<br>';
print_r($header);//Array ( [0] => 1 [1] => 2 )
echo '<hr>';
// 队列:FIFO queue数据结构之一,特殊的线性表,受到操作的限制
$queue = ['我','们'];
//尾部进队+头部出队 array_push + array_shift
array_push($queue,'心','中','家');
print_r($queue);//Array ( [0] => 我 [1] => 们 [2] => 心 [3] => 中 [4] => 家 )
echo '<br>';
echo array_shift($queue);//我
echo '<br>';
print_r($queue);//Array ( [0] => 们 [1] => 心 [2] => 中 [3] => 家 )
echo '<hr>';
// 头部进队+尾部出队 array_unshift + array_pop
$queue1 = ['wo','men'];
array_unshift($queue1,'one','two');//Array ( [0] => one [1] => two [2] => wo [3] => men )
print_r($queue1);
echo '<br>';
echo array_pop($queue1);//men
案例总结:
1、key() 函数返回数组内部指针当前指向元素的键名
2、array_keys()返回数组,数组成员是原数组的键名
3、array_values()返回数组中所有的值(不保留键名),键值从0到1 递增
4、in_array()检测一个成员在不在指定的数组中,存在返回true 不存在返回false
5、array_search() 不存在返回false,存在的话返回元素值对应的键名
6、array_unique() 移除数组中重复的值
7、array_sum() 返回数组中所有成员的和
8、array_product() 返回数组中所有成员相乘的结果
9、array_slice 从数组中去除一部分元素
10、array_splice() 删除,替换,新增三个功能,函数从数组中移除选定的元素,并用新元素取代它。
11、extract() 将关联数组拆分成变量,使用数组键名作为变量名,使用数组键值作为变量值。
12、compact()创建一个包含变量名和它们的值的数组:
栈与队列
栈:是一种特殊的线性表,是添加与删除受限的一种数据结构 LIFO,只能在固定的一端进行数据的添加与删除 last in first out
- array_push()在栈的尾部进行-增加
- array_pop()在栈的尾部进行-删除
- array_unshift()在栈的头部进行数据-增加
- array_shift()在栈的头部进行数据-删除
队列:FIFO queue数据结构之一,特殊的线性表,受到操作的限制
- 尾部进队+头部出队 array_push + array_shift
- 头部进队+尾部出队 array_unshift + array_pop