2009-10-19 8 views
0

comment pourrais-je trier ces deux produits par dire "id: 17 valeur: ###"Comment trier les produits JSON avec PHP

{ "id": "16", "valeur": "L-AOC000 "}, {" id ":" 17 "," value ":" 6.00 "}, {" id ":" 18 "," value ":" 10.00 "}, {" id ":" 19 "," valeur ":" 7.52 "}, {" id ":" 20 "," valeur ":" 4.75 "}, {" id ":" 21 "," valeur ":" 3.50 "}

{" id " : "16", "value": "L-AOC001"}, {"id": "17", "value": "7.00"}, {"id": "18", "valeur": "11.00" }, {"id": "19", "value": "6.52"}, {"id": "20", "value": "5.75"}, {"id": "21", "valeur" : "4,50"}

Répondre

2

Eh bien d'abord, vous voudriez convertir le JSON en un type php.

$ data = json_decode ($ the_json_string);

Ensuite, ce que vous avez est vraiment un tableau d'objets.

Vous pouvez utiliser usort() pour le trier (http://au2.php.net/usort) par propriété.

On dirait que vous voulez tester par identifiant d'abord, puis en valeur ...

function sort_by_id_then_value($a, $b) 
{ 
    if ($a->id == $b->id) { 
     if ($a->value == $b->value) { 
      return 0; 
     return ($a->value < $b->value) ? -1 : 1; 
    } 
    return ($a->id < $b->id) ? -1 : 1; 
} 

usort($data, "sort_by_id_then_value");