2009-05-20 6 views
1

J'ai la JSON suivante:Tri JSON Sortie en PHP

{ 
"row": [ 
    { 
    "sort":3, 
    "type":"fat", 
    "widgets": 
     [ 
      {"values": [3,9] }, 
      {"values": [8,4] }     
     ] 
    }, 
{ 
    "sort":2, 
    "type":"three", 
    "widgets": 
    [ 
     {"values": [3,4] }, 
     {"values": [12,7] }, 
     {"values": [12,7] }       
    ] 
}      
] 
} 

Ce PHP pour le sortir:

foreach ($value->row as $therow) 
{ 
    echo "<div class='row ".$therow->type."'>"; 

    foreach ($therow->widgets as $thewidgets) 
    { 
     echo "<div class='widget'>"; 
     echo $thewidgets->values[0]; 
     echo "</div>"; 

    } 

    echo "</div>"; 

} 

Ce que je voudrais faire est en quelque sorte le ouput en fonction de la trier la valeur dans le JSON, des idées?

+0

Et quel genre de genre serait « 2 » ou « 3 »? – Gumbo

+1

L'ordre de la ligne telle qu'elle a été créée dans le backend – Tom

Répondre

4

Utilisation usort:

function my_sort($a, $b) 
{ 
    if ($a->sort < $b->sort) { 
     return -1; 
    } else if ($a->sort > $b->sort) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 

usort($value->row, 'my_sort'); 
0

Il suffit de trier les données avant l'impression dans la seconde boucle foreach:

foreach ($value->row as $therow) { 
    if ($therow->sort == 2) { 
     // sort $therow->widgets according to whatever sort 2 means 
    } elseif ($therow->sort == 3) { 
     // sort $therow->widgets according to whatever sort 3 means 
    } 
    echo "<div class='row ".$therow->type."'>"; 
    foreach ($therow->widgets as $thewidgets) { 
     echo "<div class='widget'>"; 
     echo $thewidgets->values[0]; 
     echo "</div>"; 
    } 
    echo "</div>"; 
}