Je veux trier sur le champ banner_id (int). Mais quand je cours, j'obtiens un résultat étrange.php usort() résultats dans un résultat étrange
Le résultat de cette usort() est le suivant:
101 - 204- 34 - 45 - 69 - etc.
Je dois obtenir:
34 - 45 -69 - 101 - 204
function usort_reorder($a,$b){
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'banner_id';
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc';
$result = strcmp($a[$orderby], $b[$orderby]);
return ($order==='asc') ? $result : -$result;
}
usort($data, 'usort_reorder');
Que faire pour que ce tri soit correct? Signifie non seulement le premier chiffre mais le chiffre entier. Maintenant, il ne prend que le premier.
'strcmp' compare les valeurs sous forme de chaînes, pas des nombres. – Ryan
quel genre de comparaison devrais-je utiliser ici alors? – Hermants
Si votre champ '$ a [$ orderby]' est numérique, vous pouvez simplement utiliser '$ result = $ a [$ orderby]> $ b [$ orderby];'. – xander