У меня есть следующий JSON:
{ "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] } ] } ] }
И этот PHP для вывода:
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>"; }
Что мне хотелось бы сделать, так это сортировать вывод, основанный на значении сортировки в JSON, любых идеях?
Использовать 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');
Глянь сюда:
Сортировка ассоциативного массива в PHP
для пользовательской сортировки.
См. Ниже, если вы хотите сделать это на стороне клиента.
Сортировка JSON по значениям
Просто отсортируйте данные перед печатью во втором цикле 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>"; }