数组常用函数
一、与键相关的函数
1.array_keys():获取数组键名
<?php
$arr = ['姓名' => '张三','年龄' => 22,'性别' => '男'];
print_r(array_keys($arr));
2.array_key_exists():判断某个键名是否存在,返回布尔值
var_dump(array_key_exists('姓名',$arr));
echo '<hr>';
var_dump(array_key_exists('身高',$arr));
3.array_key_first():返回第一个键名
//返回第一个键名
echo array_key_first($arr);
4.array_key_last():返回最够一个键名
//返回最后一个键名
echo array_key_last($arr);
二、与值相关的数组函数
1.array_values():获取数组所有的值
$arr = [1 => 100,'name' => '武松','age' => '31',20,200 => 50];
print_r(array_values($arr));
2.in_array():判断某个值是否存在,返回布尔值
var_dump(in_array('武松',$arr));
echo '<hr>';
var_dump(in_array('宋江',$arr));
3.array_search():找到了返回元素值对应的键名,找不到返回false
//找到了返回元素值对应的键名,找不到返回false
var_dump(array_search('css3',$arr));
echo '<hr>';
var_dump(array_search('武松',$arr));
4.arrar_unique():删除重复值
$arr =['1' => '孙悟空','2' => '唐三藏','3' => '孙悟空','4' => '沙悟净'];
print_r($arr);
echo '<hr>';
print_r(array_unique($arr));
5.数组的计算
$arr = [2,2,3];
echo '数组求和:'.array_sum($arr).'<hr>';
echo '数组求积:'.array_product($arr);
三、栈与队列
<?php
//栈与队列
//栈是添加与删除受限的一种数据结构,数据的增删仅允许在一端进行,LIFO,最后进先出
$arr = [];
//array_push:向数组尾部插入一个或多个元素
echo '入栈:'.array_push($arr,1,2,3);
print_r($arr);
//array_pop():函数用来删除数组末尾的元素(出栈)返回值是删除的值
echo '<br>出栈:'.array_pop($arr);
echo '<br>出栈:'.array_pop($arr);
echo '<br>出栈:'.array_pop($arr);
//队列:先进先出
//array_unshift():函数用于向数组插入新元素。新数组的值将被插入到数组的开头
echo '<br>在栈的头部新增元素:'.array_unshift($arr,4,5,6).'<br>';
print_r($arr);
echo '<br>在栈的头部删除元素:'.array_shift($arr);
echo '<br>在栈的头部删除元素:'.array_shift($arr);
echo '<br>在栈的头部删除元素:'.array_shift($arr);
//array_shift():删除数组中的第一个元素,并返回被删除元素的值
四、数组排序
1.sort():升序排列,键名重新生成
<?php
//数组的排序
$arr = [100,'b','a','d',50,2,15,5];
print_r($arr);
echo '<br>';
//将元素从低到高排列
sort($arr);
print_r($arr);
2.asort():按照值进行升序排列,键名不会重新生成
//asort() 函数对关联数组按照值进行升序排序
$arr = [100 => 10,10=>50,50=>20,'a' => 10];
print_r($arr);
echo '<br>';
asort($arr);
print_r($arr);
3.ksort():按键进行升序排列
$arr = [100 => 10,10=>50,50=>20,'a' => 10];
print_r($arr);
echo '<br>';
ksort($arr);
print_r($arr);
4.krsort():按键进行降序排列
$arr = [100 => 10,10=>50,50=>20,'a' => 10];
print_r($arr);
echo '<br>';
krsort($arr);
print_r($arr);
5.usort():自定义排序
$arr = [20,5,62,45,90];
print_r($arr);
echo '<br>';
usort($arr,function($a,$b){
return $a - $b;
});
print_r($arr);
6.natsort():自然排序
$arr = ['a5','a2','a8','a6'];
print_r($arr);
echo '<br>';
natsort($arr);
print_r($arr);
五、其它数组函数
1.array_slice():从数组中取出一部分元素
<?php
//array_slice():从数组中取出一部分元素
$arr = ['姓名' => '张三','年龄' => 20,'身高' => 170,'爱好' => '打篮球'];
//省略最后一个值默认获取所有值
print_r(array_slice($arr,0));
echo '<hr>';
print_r(array_slice($arr,0,2));
2.array_splice():实现增删改
$arr = [1,2,3,4,5,6];
print_r($arr);
//删除
echo '<hr>';
print_r(array_splice($arr,0,2));
echo '<hr>';
print_r($arr);
//返回被删除元素组成的数组
//替换
echo '<hr>';
print_r(array_splice($arr,0,2,[100,200]));
echo '<hr>';
print_r($arr);
3.array_combine():合并数组
<?php
$arr = ['孙悟空','猪八戒','沙悟净','白龙马'];
$arr2 = [1,2,3,4];
$arr3 = array_combine($arr,$arr2);
print_r($arr3);
4.array_merge() 函数用于把一个或多个数组合并为一个数组
print_r(array_merge($arr,$arr2));
5.array_filter():只返回元素可以转为true的元素
<?php
//array_filter():只返回元素可以转为true的元素
$arr = [1,'name',true,false,0,'0',null,''];
print_r($arr);
print_r(array_filter($arr));
6.array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
//array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
$arr = ['name',[1,2,3],(new class{public $name = '张三';public $age = 22;}),100];
$res = array_map(function($i){
switch (gettype($i)){
case 'object':
$i = get_object_vars($i);
$i = implode(',',$i);
break;
case 'array':
$i = implode(',',$i);
}
return $i;
},$arr);
print_r($res);
7.extract():将关联数组拆分为变量
<?php
//$arr = ['cat','dog','pig','orange'];
//extract():将关联数组拆分为变量
$config = ['name' => '张三','age' => 23,'sex' => '男'];
extract($config);
echo $name,$age,$sex;
8.compact():将一组变量组装成关联数组
//compact():将一组变量组装成关联数组
$id = 1;
$name = '张三';
$sex = '男';
print_r(compact('id','name','sex'));
学习总结
1.与键相关函数
array_keys():获取数组键名
array_key_exists():判断某个键名是否存在,返回布尔值
array_key_first():返回第一个键名
array_key_last():返回最够一个键名
2.与值相关的数组函数
array_values():获取数组所有的值
in_array():判断某个值是否存在,返回布尔值
array_search():找到了返回元素值对应的键名,找不到返回false
arrar_unique():删除重复值
3.栈与队列
- 栈:先进后出
array_push:向数组尾部插入一个或多个元素(进栈)
array_pop():函数用来删除数组末尾的元素(出栈)返回值是删除的值
- 队列:先进先出
array_unshift():函数用于向数组插入新元素,新数组的值将被插入到数组的开头
array_shift():删除数组中的第一个元素,并返回被删除元素的值
4.数组排序
sort():升序排列,键名重新生成
asort():按照值进行升序排列,键名不会重新生成
ksort():按键进行升序排列
krsort():按键进行降序排列
usort():自定义排序
natsort():自然排序
5.其它数组函数
array_slice():从数组中取出一部分元素
array_splice():实现增删改
array_combine():合并数组
array_merge() 函数用于把一个或多个数组合并为一个数组
array_filter():只返回元素可以转为true的元素
array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
extract():将关联数组拆分为变量
compact():将一组变量组装成关联数组