我有一个像这样的排序函数:
function aasort ($array, $key, $order) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii]=$va[$key];
}
if($order == "asc")
asort($sorter);
else
arsort($sorter);
foreach ($sorter as $ii => $va){
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
根据1个键值对数组进行排序。
和数组:
$mArray[] = array(
'id' => $v->id,
'count' => $v->count
);
aasort($mArray, 'count', 'desc');
我得到的数据是:
"mArray":
{
"1":{"id":"80","count":"2"},
"0":{"id":"77","count":"1"}
}
我在开发人员工具中看到的,但是当我在一些json编辑器中复制并检查时,问题是它们按索引的顺序排列
{
"0":{"id":"77","count":"1"},
"1":{"id":"80","count":"2"}
}
.done(function(d){
for(var x in d.mArray){
d.mArray[x];
}
})
这里它的索引顺序又是0,1,......所以列表是未排序的。
答案 0 :(得分:0)
谨慎使用键盘顺序: 转移JSON时,Chrome会重新排序您的索引,而Firefox会保持完整。您无法确定订单是否保留。解决这个问题的唯一方法是使用
$array = array_values($ret)
或在您的代码中将最后一个循环更改为
foreach ($sorter as $ii => $va)
$ret[]=$array[$ii];
排序后创建一个干净的升序。如果您需要旧索引,则必须将其存储在每个节点的数据中。