php二维数组多元素排序小编介绍过很多了,只是今年看到这个例子有一点区别了所以小编为各位整理了一下,希望这个排序算法能够帮助到各位。
写个二维数组的多元素排序,多元素排序类似sql中的order by sort,date,下面代码考虑性能问题,只涉及2个元素进行排序。
代码区:
 $v) {        $key_count = count($old_arr) - 1;        //第一个元素数相等,放入临时数组        if ($v[$arr1[0]] == $old_arr[$k - 1][$arr1[0]] || empty($temp_array)) {            $temp_array[$k] = $v;        }        if (($v[$arr1[0]] != $old_arr[$k - 1][$arr1[0]] && !empty($temp_array)) || $key_count == $k) {            //添加最新元素            $temp_array[$k] = $v;            //数组大于1时,进行排序处理            if (count($temp_array) > 1) {                if ($key_count != $k) {                    //删除最后一个(与上一个不相等元素)                    unset($temp_array[$k]);                }                //不是最后或者最后相同,进行排序                if ($key_count != $k || $v[$arr1[0]] == $old_arr[$k - 1][$arr1[0]]) {                    //排序第二个元素                    $temp_array = array_sort($temp_array, $arr2[0], $arr2[1]);                }                //排序后把排序的数组,插入原数组排序前位置                $count = count($new_temp_array) == 0 ? 0 : count($new_temp_array);                foreach ($temp_array as $val_t) {                    $new_temp_array[$count] = $val_t;                    $count++;                }                //写入新数组后清空原数组                $temp_array = array();                //添加最新元素                $temp_array[$k] = $v;            }        }    }    return $new_temp_array;}//根据数组元素排序function array_sort($arr, $keys, $type = 'asc') {    $keysvalue = $new_array = array();    //获取元素值,生成新数组    foreach ($arr as $k => $v) {        $keysvalue[$k] = $v[$keys];    }    //排序,默认为正序    if ($type == 'asc') {        asort($keysvalue);    } else {        arsort($keysvalue);    }    reset($keysvalue);    $count_s = 0;    //恢复键值    foreach ($keysvalue as $k => $v) {        $new_array[$count_s] = $arr[$k];        $count_s++;    }    return $new_array;}//调用方法:$old_arr = array(    array(        'id' => 1,        'sort' => 1,        'date' => '1405648791'    ) ,    array(        'id' => 2,        'sort' => 1,        'date' => '1405649791'    ) ,    array(        'id' => 3,        'sort' => 2,        'date' => '1405647791'    ) ,);$arr1 = array(    'sort',    'desc');$arr2 = array(    'date',    'desc');$newarr = multiplearraysort($old_arr, $arr1, $arr2);var_dump($newarr);
//打印结果:
   
 
   