排序数组的问题,json_encode

时间:2016-05-27 17:38:00

标签: php android arrays json sorting

我遇到排序数组的问题。我试图用json返回我用ksort排序的数组,看起来数组排序得很好但是当我用json返回它时它变成了真实的状态。

以下是代码:

$sql = mysql_query("select e.id_equip,e.nom from Equips e inner    join Competicions c on e.id_competicio=c.id_competicio where c.nom='Preferent' and c.actiu=1");

$tempArray = array();
$json = array();

while($row = mysql_fetch_assoc($sql)){

$sqlDadesLocal = mysql_query("Select SUM(case when resultat_total_local >= 4 then 1 else 0 end) as partitsGuanyats, SUM(case when resultat_total_local < 4 then 1 else 0 end) as partitsPerduts, SUM(resultat_parcial_local) as jocsAFavor, SUM(resultat_parcial_visitant) as jocsEnContra from Actes where id_equip_local = '".$row['id_equip']."'");
$DadesLocal = MySQL_fetch_row($sqlDadesLocal);

$sqlDadesVisitant =  mysql_query("Select SUM(case when resultat_total_visitant >= 4 then 1 else 0 end) as partitsGuanyats, SUM(case when resultat_total_visitant < 4 then 1 else 0 end) as partitsPerduts, SUM(resultat_parcial_visitant) as jocsAFavor, SUM(resultat_parcial_local) as jocsEnContra from Actes where id_equip_visitant = '".$row['id_equip']."'");
$DadesVisitant = MySQL_fetch_row($sqlDadesVisitant);

$SumaPartitsGuanyats = $DadesLocal[0]+$DadesVisitant[0];
$SumaPartitsPerduts = $DadesLocal[1]+$DadesVisitant[1];
$SumaJocsAFavor = $DadesLocal[2]+$DadesVisitant[2];
$SumaJocsEnContra = $DadesLocal[3]+$DadesVisitant[3];
$DiferenciaJocs = $SumaJocsAFavor-$SumaJocsEnContra;
$Punts = $SumaPartitsGuanyats*2;

$json['nomEquip'] = $row['nom'];
$json['partitsGuanyats'] = $SumaPartitsGuanyats;
$json['partitsPerduts'] = $SumaPartitsPerduts;
$json['jocsAFavor'] = $SumaJocsAFavor;
$json['jocsEnContra'] = $SumaJocsEnContra;
$json['diferenciaJocs'] = $DiferenciaJocs;
$json['puntsTotals'] = $Punts;

$tempArray[]= $json;
}

ksort($tempArray,$tempArray['puntsTotals']);

echo json_encode(array('preferent'=>$tempArray));

mysql_close($conn);
}
?>

1 个答案:

答案 0 :(得分:0)

解决了改变这个函数ksort的问题,它运行得很好。

usort($tempArray, function($a, $b) {
        if($a['puntsTotals']==$b['puntsTotals']) return 0;
        return $a['puntsTotals'] < $b['puntsTotals']?1:-1;
});


echo json_encode(array('preferent'=>$tempArray));