起初 - 是的,我试图在这里找到我的问题,但无法做到。
我的数组排序有问题。我想使用自定义数组排序来对从DB中获取的一些数据进行排序。
例如,我有数组
values: [ 0, 0, 0, 0, 14830, 78426, 0, 0, 0, 0, 0, 0, 6024, 1144, 4438, 19282 ]
我需要获得最后4个(有时是3个或2个,所以它是自定义的)结果在第一个位置以与现在相同的顺序。结果应该是:
values: [ 6024, 1144, 4438, 19282, 14830, 78426, 0, 0, 0, 0, 0, 0,]
我该怎么做?
我用
制作这个数组while($row=mysql_fetch_array($re))
{
$dates = $row['mon'];
while ($current_month != $dates) {
$current_month = $current_month + 1;
if($current_month == 13)
$current_month = 1;
$data[] = 0;
}
$data[] = intval($row['type']);
$current_month = $dates+1;
}
我将数月作为$ current_month并使用它将我的数据放在正确的位置。当月份没有结果时,它会在该位置添加0。 结果应该只有6,当没有经过多年时它使数组正确,但有时它会像这样出错,所以我想使用自定义排序制作正确的数组,就像我最初提到的那样。
所以我想对这个数组进行排序,并使用array_slice将其剪切为6。
感谢您的帮助。
答案 0 :(得分:0)
$svalues = array_slice($values, 4);
rsort(&$svalues);
$array = array_merge(array_slice($values, count($values) - 4, 4), $svalues);
答案 1 :(得分:0)
这是一个自定义排序的例子..我不确定我是否正确理解你的问题以帮助你...但这应该给你一个想法..
var myMultiArray = [ {"Name": "Steve", "Age":41},
{"Name": "Joe", "Age":55},
{"Name": "Robert", "Age":34},
{"Name": "Alex", "Age":35}];
function customMultiSort(a, b) {
return (a['Age'] - b['Age']);
}
myMultiArray.sort(customMultiSort);
document.write(myMultiArray.toSource());
答案 2 :(得分:0)
$desired_length = 4;
$arr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
$length = count($arr);
$array = array_slice($arr, $length-$desired_length, $desired_length) + array_slice($arr,0,$length-$desired_length);