Étant donné un tableau d'objets où chaque objet du tableau ressemble à ceci :
"success": true,
"data": [
{
"doctor_id": 4, -- Use this id for getting in method get inquiry doctor offers.
"clinic": "John",
"distance": "10 mile"
"city": "Los Angeles",
"price": "123",
"photo": false,
"rating": {
"stars": null,
"reviews": null
},
"add_info"=> "Some information",
"time_after_create": 942 -- in seconds.
}
]
Existe-t-il une méthodologie en php qui me permettra de trier par $data->prix de bas en haut et de haut en bas, puis de trier également par $data->rating->stars
où les étoiles sont un nombre compris entre 0 et 5 ?
J'ai jeté un œil à la réponse ici qui parle de array_multisort ().
Mais je ne sais pas si cela correspond à ce que je recherche.
Toutes les idées ou idées sont les bienvenues.
2 réponses
Utilisez usort, voici un exemple :
function cmp($a, $b)
{
return strcmp($a->name, $b->name);
}
usort($your_data, "cmp");
Dans votre cas, je peux vous proposer rapidement la solution suivante :
function cmp($a, $b)
{
if ($a->price == $b->price) {
return 0;
}
return ($a->price < $b->price) ? -1 : 1;
}
usort($your_data, array($this, "cmp"));
Note : "cmp" est la fonction appelable (elle doit être utilisée pour PHP >5.3)
Vous devriez peut-être utiliser le paramètre $assoc lors du décodage de ce json. Il vous donnera les données sous forme de tableau au lieu d'un objet afin que vous puissiez trier ce tableau. json_decode
$array1 = json_decode($input, TRUE);
Je pense que cela peut également être utile si vous lisez sur Object Iteration en php .
Questions connexes
Questions liées
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.