zoukankan      html  css  js  c++  java
  • PHP 数组操作

    1 array_keys($array) //返回所有键名   
    2 array_values($array) //返回所有键值    
    3 $result=array_reverse($input); //将数组颠倒,不保留键名  
    4 $result_keyed=array_reverse($input,true); //将数组颠倒,保留键名   
    5 array_keys($array,"blue"); //返回值为blue的键名


    6 PHP二维数组去重复项函数

    PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数


    Php代码
    function unique_arr($array2D,$stkeep=false,$ndformat=true)
    {
        // 判断是否保留一级数组键 (一级数组键可以为非数字)
        if($stkeep) $stArr = array_keys($array2D);

        // 判断是否保留二级数组键 (所有二级数组键必须相同)
        if($ndformat) $ndArr = array_keys(end($array2D));

        //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        foreach ($array2D as $v){
            $v = join(",",$v);
            $temp[] = $v;
        }

        //去掉重复的字符串,也就是重复的一维数组
        $temp = array_unique($temp);

        //再将拆开的数组重新组装
        foreach ($temp as $k => $v)
        {
            if($stkeep) $k = $stArr[$k];
            if($ndformat)
            {
                $tempArr = explode(",",$v);
                foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
            }
            else $output[$k] = explode(",",$v);
        }

        return $output;
    }


    Php代码
    $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));       print_r($array2D);   print_r(unique_arr($array2D,true));  

    $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); print_r($array2D);print_r(unique_arr($array2D,true));

     
    二、将多维数组转换为一维,二维数组

    //将多维转换在一维
    function rebuild_array($arr){  //rebuild a array
      static $tmp=array();
      foreach($arr as $key=>$val){
        if(is_array($val)){
          $this->rebuild_array($val);
        }else{
          $tmp[] = $val;
        }
      }
      return $tmp;
    }
    //将三维数据数组转换为二维
    function rebuild_arrays($arr){  //rebuild a array
      static $tmp=array();
      foreach($arr as $key=>$val){
        foreach($val as $k=>$v){
          $tmp[] = $v;
        }
      }
      return $tmp;
    }

     

    三、去掉数组中的最后一项

    $name = array("orange","banana", "apple"," ");
    array_pop   ($name);  //弹出尾部
    print_r($name); //$name = array("orange","banana", "apple");

     
     
    四 二维数组按某个键值重新排序
     function multisort(&$array, $key_name, $sort_order = 'SORT_ASC', $sort_type = 'SORT_REGULAR') {
            if (!is_array($array)) {
                return $array;
            }
    
            // Get args number.
            $arg_count = func_num_args();
    
            // Get keys to sort by and put them to SortRule array.
            for ($i = 1; $i < $arg_count; $i++) {
                $arg = func_get_arg($i);
                if (!preg_match('/SORT/', $arg)) {
                    $key_name_list[] = $arg;
                    $sort_rule[] = '$'.$arg;
                } else {
                    $sort_rule[] = $arg;
                }
            }
    
            // Get the values according to the keys and put them to array.
            foreach ($array as $key => $info) {
                foreach ($key_name_list as $key_name) {
                    ${$key_name}[$key] = $info[$key_name];
                }
            }
    
            // Create the eval string and eval it.
            $eval_str = 'array_multisort('.implode(',', $sort_rule).', $array);';
            eval($eval_str);
            return $array;
    
        }

    调用方法:$this->multisort($u, "address");dump($u);

  • 相关阅读:
    textarea聚焦的多种写法
    vue.js入门
    全选,反选
    jquery列表,点击反应
    SqlServer中offset..fetch 的使用问题
    复习Spring第四课---Spring对国际化的支持
    SqlServer的order by问题
    设计模式之---代理模式
    解决SpringMVC重复提交的问题
    Java知识复习(三)
  • 原文地址:https://www.cnblogs.com/martin1009/p/2663894.html
Copyright © 2011-2022 走看看