数组函数
- array_values($arr):获得数组的值
- array_keys($arr):获得数组的键名
- array_flip($arr):数组中的值与键名互换,有重复前面的会被后面的覆盖
- in_array(‘user’,$arr):在数组中检索user
- array_search(‘user’,$arr):在数组中检索user,如果存在返回键名
- array_key_exists(‘user’,$arr)检索给定的键名是否存在数组中
- isset($arr[user]):检查给定的键名是否存在数组中数组的内部指针
- extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
- array_slice($arr,0,3);可以将数组中的一段取出,此函数忽略键名
- array_splice($arr,0,3,array(“black”,”maroon”));可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除分割多个数组
- array_chunk($arr,3,TRUE);可以将一个数组分割成多个,TRUE为保留原数组的键名数组的填充
- array_pad($arr,5,’x’);将一个数组填补到制定长度
- array_push($arr,”apple”,”pear”);将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
- array_pop($arr);将数组栈的最后一个元素弹出(出栈)
- array_shift($arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变)
- array_unshift($arr,”a”,array(1,2));在数组的开头插入一个或多个元素
- array_mpa(“function”,$arr1,$arr2);可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
- sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
- rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
- usort($arr,”function”);使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
- asort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
- arsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
- uasort($arr,”function”);使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序通过键名对数组排序
- ksort($arr);按照键名正序排序
- krsort($arr);按照键名逆序排序
- uksort($arr,”function”);使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)
- natsort($arr);自然排序(忽略键名)
- natcasesort($arr);自然排序(忽略大小写,忽略键名)
- array_sum($arr);对数组内部的所有元素做求和运算数组的合并
- array_merge($arr1,$arr2);合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
数组函数示例
$arr = ['id'=>110,'name'=>'admin','email'=>'575499@qq.com','xh'=>110];
print_r(array_keys($arr));
//提取键
echo "<br>";
echo array_key_exists('name',$arr) ? '存在' :'不存在','<br>';
//判断键名是否存在
echo array_key_first($arr);
//查数组第一个键
echo "<br>";
echo array_key_last($arr);
//查数组最后一个键
echo "<br>";
$arr1= ['1'=>1,'0'=>0,'3'=>'3','5'=>5,'4'=>4,'2'=>2];
print_r(array_values($arr1));
echo "<br>";
// 返回数组的元素的值组成的所有数组,对键排序
echo in_array('js',$arr)? '找到了':'没有','<br>';
//判断数组值是否存在
print_r(array_search('admin',$arr));
//判断数组值是否存在返回键品
echo "<br>";
print_r(array_unique($arr));
//对数组重复的数据清除。
echo "<br>";
$arr2=[1,2,3,5,6,7];
echo array_sum($arr2);
//数组内的数组相加,字符串会被转换为整数,
echo "<br>";
echo array_product($arr2);
//数组内的数组相乘
echo "<br>";
$arr3 =[];
array_push($arr3,20,30,40);
print_r($arr3);
echo "<br>";
echo array_pop($arr3);
//在栈的尾部进行增删
echo "<br>";
$arr3 =[];
array_unshift($arr3,'html','css','js','php');
print_r($arr3);
echo array_shift($arr3);
echo "<br>";
//在栈的头部进行增删
$arr3=[];
array_unshift($arr3,'html','css','js','php');
echo array_pop($arr3);
//头进尾出 array_unshift + array_pop
echo "<br>";
$arr3=[];
array_push($arr3,'html','css','js','php');
echo array_shift($arr3);
//尾进头出 array_push + array_shift
- 示例图:
<?php
$arr =['q','t',3,2,1,4,6,5,'a','y',9];
sort($arr); //对数组按字母进行升序排序
print_r($arr);
echo "<br>";
rsort($arr); //对数值数组进行降序排序。
print_r($arr);
echo "<br>";
krsort($arr); //对关联数组按照键名进行降序排序。
print_r($arr);
echo "<br>";
$arr = [];
$arr = [3,54,67,4,2,7,8];
usort($arr,function($a,$b) //自定义排序,通过$a-$b调换位置升序和降序
{
return $a - $b;
});
print_r($arr);
natsort($arr); //自然排序
- 示例图
<?php
$arr =['id'=>110,'name'=>'孙悟空','age'=>98,'sex'=>'男'];
$res=array_slice($arr,-2,1);
print_r($res);
// array_slice 取数组中的值,1,2 1表示位置,2表示个数
// -2,1 -2表示从尾数,1表示个数
echo "<br>";
$arr=[];
$arr=[3,5,1,5,3,6,8,12,32,13,42];
$rs =array_splice($arr,2,1); //删除第二个开始的1个数值
$rs =array_splice($arr,1,2,[11,22]);//修改从第二位置的2个
$rs =array_splice($arr,1,0,[121,22]);//新增从第二位置新增2个
echo "<br>";
print_r($arr);
echo "<hr>";
$user =['id','username','sex','age','email','add'];
$value =[99,'孙悟空','男',599,'qtds@qq.com','广东省花果山市水帘洞小区1栋'];
print_r(array_combine($user,$value));
//两个数组的键和值链接 array_combine()
echo "<br>";
print_r(array_merge($user,$value));
//两个数组的值链接 array_merge()
- 示例图
<?php
$arr=[99,'HTML',true,[7,65,8],(new class{}),[],null,false,'',0,'0'];
$res=array_filter($arr,function($item)
{
return $item;
});
//回调函数过滤数组中的元素返回true和false
//[],null,false,'',0,'0' PHP中都属于false
$res =array_filter($arr);
$res =array_filter($arr,function($item)
{
return is_scalar($item);
});
//is_scalar用于检测变量是否是一个标量。时标量返回true
print_r($res);
echo"<hr>";
//array_map()为数组中的每个元素应用指导的回调函数进行处理,并返回新数组
$arr=['HTML',[3,2,1],(new class{public $name='孙悟空';public $age=99;}),88];
//对$arr数组元素是对象,则输出它的属性,如果是数组,则将它转为字符串输出,否则直接输出
$res= array_map(function($item){
switch(gettype($item)){
case 'object':
$item = get_object_vars($item);
$item = implode(', ',$item);
break;
case 'array' :
$item = implode(', ',$item);
}
return $item;
//判断当前元素是对象还是数组
},$arr);
print_r($res);
- 示例图
<?php
$arr = ['name','password','sex','age','add'];
echo implode(',',$arr);
//implode 将数组转换为字符串
echo "<br>";
$user =['id'=>11,'username'=>'孙悟空','sex'=>'男','age'=>99,'add'=>'广东省花果山市水帘洞小区1栋'];
extract($user);
echo $username,$sex,$age,$add;
//将关联数组拆分为变量
echo "<br>";
$id= 11;
$username='孙悟空';
$sex ='男';
$age = 99;
$add ='广东省花果山市水帘洞小区1号';
$res = compact('id','username','sex','age','add');
print_r($res);
//compact 将变量转为数组
- 示例图