如何在PHP中使用arsort()进行稳定排序?
发布时间:2020-12-13 22:38:55 所属栏目:PHP教程 来源:网络整理
导读:我需要根据值对php中的数组进行排序,数组使用一些数字作为键和值,例如: $a = array(70 = 1,82 = 5,61 = 3,55 = 1,34 = 2,53 = 2,21 = 4,13 = 5); 我喜欢这样排序: Array( [82] = 5 [13] = 5 [21] = 4 [61] = 3 [34] = 2 [53] = 2 [70] = 1 [55] = 1) 我使
我需要根据值对php中的数组进行排序,数组使用一些数字作为键和值,例如:
$a = array(70 => 1,82 => 5,61 => 3,55 => 1,34 => 2,53 => 2,21 => 4,13 => 5); 我喜欢这样排序: Array ( [82] => 5 [13] => 5 [21] => 4 [61] => 3 [34] => 2 [53] => 2 [70] => 1 [55] => 1 ) 我使用arsort它工作,但有一个问题,因为这个函数使更改defult排序键和排序数组: Array ( [13] => 5 [82] => 5 [21] => 4 [61] => 3 [53] => 2 [34] => 2 [55] => 1 [70] => 1 )
构造一个新数组,其元素是原始数组的键,值和位置:
$temp = array(); $i = 0; foreach ($array as $key => $value) { $temp[] = array($i,$key,$value); $i++; } 然后使用用户定义的顺序排序,将原始位置考虑在内: uasort($temp,function($a,$b) { return $a[2] == $b[2] ? ($a[0] - $b[0]) : ($a[2] < $b[2] ? 1 : -1); }); 最后,将其转换回原始的关联数组: $array = array(); foreach ($temp as $val) { $array[$val[1]] = $val[2]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |