php二维数组多元素排序小编介绍过很多了,只是今年看到这个例子有一点区别了所以小编为各位整理了一下,希望这个排序算法能够帮助到各位。
写个二维数组的多元素排序,多元素排序类似sql中的order by sort,date,下面代码考虑性能问题,只涉及2个元素进行排序。
代码区:
<?php
function multipleArraySort($old_arr, $arr1, $arr2) {
//排序第一个元素
$old_arr = array_sort($old_arr, $arr1[0], $arr1[1]);
$temp_array = $new_temp_array = array();
foreach ($old_arr as $k => $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);//打印结果:

立即学习“PHP免费学习笔记(深入)”;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号