PHP数组常用函数详细大全
程序员文章站
2022-03-07 19:21:34
...
1.数组常用函数
1.1 与键名相关
1.1.1 array_keys()
array_keys():函数返回包含数组中所有键名的一个新数组
$arr=['id'=>1,'name'=>'pavin','age'=>24,'sex'=>'男'];
print_r(array_keys($arr));
1.1.2 array_key_exists()
array_key_exists():函数是否存在指定的键名,如果键名存在则返回true,如果键名不存在则返回false
$arr=['id'=>1,'name'=>'pavin','age'=>24,'sex'=>'男'];
echo array_key_exists('sex',$arr)?'存在':'不存在','<hr>';
1.1.3 array_key_first()与array_key_last()
array_key_first():获取第一个键
array_key_last():获取最后一个键
$arr=['id'=>1,'name'=>'pavin','age'=>24,'sex'=>'男'];
echo array_key_first($arr);
echo array_key_last($arr);
运行程序如图:
1.2 与值相关
1.2.1 array_values()
array_values():返回数组的元素的值组成的索引数组
$arr=[3=>10,0=>'html','id'=>2,'name'=>'Pavin',10=>10];
print_r(array_values($arr));
1.2.2 in_array()
in_array():函数搜索数组中是否存在指定的值
$arr=[3=>10,0=>'html','id'=>2,'name'=>'Pavin',10=>10];
echo in_array('Pavin',$arr)?'找到了':'没有','<hr>';
1.2.3 array_search()
array_search():找到了返回元素值对应的键名,找不到返回布尔false
$arr=[3=>10,0=>'html','id'=>2,'name'=>'Pavin',10=>10];
var_dump(array_search('Pavin',$arr));
运行如图所示:
1.3 栈与队列
栈:是添加与删除受限的一种结构,数据的增删仅允许在一端进行,LIFO,后进先出
队列:满足先进先出(FIFO)
//在栈的尾部进行增删
$stack=[];
echo array_push($stack,10,20,30,45),'<hr>';
print_r($stack);
echo '<hr>';
echo array_pop($stack),'<hr>';
//在栈的头部进行增删
echo array_unshift($stack,'php','mysql');
echo '<hr>';
print_r($stack);
echo array_shift($stack);
echo '<hr>';
//队:先进先出FIFO
$queue=[];
//尾部进,头部出 array_push,array_shift
//尾部进队
array_push($queue,10,20,30);
print_r($queue);
echo '<hr>';
//头部出队,对照栈,栈尾部进,尾部出
echo array_shift($queue);
// echo array_shift($queue);
// echo array_shift($queue);
//头部进,尾部出 ,array_unshift,array_pop
array_unshift($queue,'one','two','three');
echo '<hr>';
print_r($queue);
echo '<hr>';
echo array_pop($queue);
如图所示:
1.4 排序
1.4.1 sort
sort():函数对数值细分进行升序排序
$arr=[30,4,38,14,'ava','avd',2,35];
//默认按值的升序
sort($arr);
print_r($arr);
1.4.2 ksort
ksort():函数对关联按照遵循键名进行升序排序
$arr=['e'=>10,'a'=>30,'p'=>50];
//降序
ksort($arr);
print_r($arr);
1.5 array_slice()
array_slice() 函数返回数组中的选定部分
$stu=['id'=>101,'name'=>'无极','age'=>28,'course'=>'php','grade'=>80];
$res=array_slice($stu,0);
$res=array_slice($stu,0,2);
print_r($res);
1.5.1 array_splice
array_splice():函数从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组
//array_splice($arr,...):实现增删改
$arr=[10,28,8,33,2,34,56,23];
print_r($arr);
echo '<hr>';
//删除
$res1=array_splice($arr,1,2);
//返回被删除的元素组成的数组
print_r($res1);
echo '<hr>';
print_r($arr);
echo '<hr>';
//替换
$res2=array_splice($arr,1,2,[888,999]);
print_r($res2);
echo '<hr>';
print_r($arr);
echo '<hr>';
//新增
$res3=array_splice($arr,1,0,[888,999]);
print_r($res3);
echo '<hr>';
print_r($arr);
1.6 array_combine和array_merge
array_combine():函数通过合并两个副本来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值
//合并
$keys=['type','host','dbname','username','password'];
$values=['mysql','localhost','phpedu','root','root'];
print_r(array_combine($keys,$values));
array_merge():函数用于把一个或多个数组合并为一个数组
$a1=array("a"=>"This","b"=>"is");
$a2=array("c"=>"a","d"=>"apple");
print_r(array_merge($a1,$a2));
1.7 array_filte和array_map
// 1.array_filter():只返回元素可以转为为true的元素组成的数组
$arr=[150,'php',true,[4,5,6],(new class{}),[],null,false,'',0,'0'];
//[],null,false,'',0,'0':转为false
$res=array_filter($arr);
$res=array_filter($arr,function($item){
return is_scalar($item);
});
print_r($res);
// 2.array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
$arr=['php',[2,3,4],(new class{public $name='电脑';public $price=999;}),15,20];
//任务:如果数组元素是对象,则输出它的属性,如果是数组,则将它转为字符串输出,否则直接输出
$res=array_map(function($item){
//判断当前元素是否是对象或数组
switch(gettype($item)){
case 'object':
$item=get_object_vars($item);
case 'array':
$item=implode(',',$item);
}
return $item;
},$arr);
print_r($res);
1.8 implode和extract以及compact
<?php
$arr=['huawei','xiaomi','apple','oppo','vivo'];
// implode():数组转为字符串
echo implode(',',$arr);
echo '<hr>';
// extract():将关联数组拆分为变量
$config=['type'=>'mysql','host'=>'localhost','dbname'=>'phpedu','charset'=>'utf8'];
extract($config);
echo $type,$host,$dbname,$charset;
echo '<hr>';
//compact():将一组变量再组装成关联数组
$id=1;
$username='peter zhu';
$gender='男';
print_r(compact('id','username','gender'));
?>
上一篇: 【阿里云镜像】配置Pouch镜像