php数组处理(二)

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;
}

 注:整理常用数组处理方法,后续一直更新整理;(如有错误,请及时纠正,共同进步) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值