1.在数组中搜索键值 "red",并返回它的键名
$a=array("a"=>"red","b"=>"green","c"=>"blue",'e'=>"red");
echo array_search("red",$a); //a
//2.返回多个键名
$keys=array_keys($items,'red'); //返回数组
2.判断是一维数组还是多维数组
count($temp_arr) == count($temp_arr,1)
3.二维数组去重
//二维数组去重 SORT_REGULAR把每一项按常规顺序排列,不改变类型
array_unique($ret_arr,SORT_REGULAR);
4. 数组重新排序
array_values(Array);
//以下这种数据问题是因为unset()结果导致的;可以进行数组重新排序
//删数组之前,json_encode是一个数组,删除之后,在json看来就会是一个字符串,
//这是php内置的机制,要改的话,直接在unset后面加一个array_values函数即可,
//这个函数是把你数组的键进行重排0-N,这样问题就得以解决
5. 二维数组变一维数组
array_column($array, column_key,index_key); 返回数组中某一个单一列的值。
//这个方法 得益于 PHP 内部的使用方法
//array_column($array,column_key,index_key) 版本 5.5 +
//array 必需。规定要使用的多维数组(记录集)。
//column_key :必需。需要返回值的列。可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。 该参数也可以是 NULL,此时将返回整个数组(配合 index_key 参数来重置数组键的时候,非常有用)。
//index_key :可选。用作返回数组的索引 / 键的列
6.去除数组中的值
$arr = [1,2,3];
for ($z = 0;$z < count($arr);$z++){
if ($arr[$z] == 2){
array_splice($arr,$z,1);
}
}
dump($arr);die;
7.去除空二维数组空数组并重新排序
array_values(array_filter($redis_arr));
array_filter(data) //会删除data中值等于 0值,空字符串,null 的元素
8.取出数组中相同的值
//1.第一种方法
function back_assoc_array($arr){
$ret = [];
for ($i = 0;$i < @count($arr);$i++){
for ($j = $i + 1;$j < @count($arr);$j++){
if ($arr[$i] == $arr[$j]){
$ret[] = $arr[$i];
break;
}
}
}
return $ret;
}
//2.第二种方法
$arr = [
['Name_EN'=>1,'Name'=>1],
['Name_EN'=>2,'Name'=>2],
['Name_EN'=>1,'Name'=>1],
['Name_EN'=>2,'Name'=>2],
];
$NameArr = array_column($arr,'Name');
$UniqueNameArr = array_unique(array_column($arr,'Name'));
$res = array_diff_assoc($NameArr,$UniqueNameArr);
dump($res);die;
9.二维数组合并成一维数组
$arr = [
[
'test'=>[1,2,3],
],
[
'test'=>[4,5,6],
],
[
'test'=>[7,8,9],
],
];
$ret = [];
foreach (array_column($arr,'test') as $key=>$value){
$ret = array_merge($ret,$value);
}
10.二维数组根据键值排序
$info = [
['s'=>1,'d'=>'3'],
['s'=>4,'d'=>'3'],
['s'=>5,'d'=>'3'],
['s'=>2,'d'=>'3'],
];
$last_names = array_column($info,'s');
array_multisort($last_names,SORT_REGULAR,$info);
dump($info);die;
11.数组取出相同值
array_intersect($arr1 $arr2); //返回相同值
array_diff($arr1 $arr2); //$arr1与$arr2比较,取出$arr1不同于$arr2的;
12.根据数组中的时间进行排序并截取数组的固定数据
$arr = [
['a'=>'1','time'=>'2020-07-12 11:23:11'],
['a'=>'2','time'=>'2020-07-11 11:23:22'],
['time'=>'2020-07-11 11:23:13'],
['a'=>'3','time'=>'2020-07-11 11:23:14'],
['a'=>'4','time'=>'2020-07-11 11:23:15'],
];
uasort($arr,function($a,$b){
return strtotime($a['time'])<strtotime($b['time'])?1:-1;
});
dump(array_values($arr));
dump(array_slice(array_values($arr),0,10));die;
13.根据二维数组的某一个字段进行去重
$arr = [
["ID"=>1,"Name"=>"aaa"],
["ID"=>2,"Name"=>"aaa"],
["ID"=>3,"Name"=>"bbb"],
["ID"=>4,"Name"=>"ccc"],
["ID"=>5,"Name"=>"bbb"],
];
array_unset_tt($arr,"Name");
function array_unset_tt($arr,$key){
//建立一个目标数组
$res = [];$ret = [];
foreach ($arr as $value) {
//查看有没有重复项
if(isset($res[$value[$key]])){
unset($value[$key]); //有:销毁
}else{
$res[$value[$key]] = $value;
array_push($ret,$value);
}
}
return $ret;
}
注:整理常用数组处理方法,后续一直更新整理;(如有错误,请及时纠正,共同进步)