Сортировка вывода JSON в PHP - PullRequest
1 голос
/ 20 мая 2009

У меня есть следующий 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, есть идеи?

Ответы [ 4 ]

4 голосов
/ 20 мая 2009

Использование 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');
2 голосов
/ 20 мая 2009

Смотрите здесь:

Сортировка ассоциативного массива в PHP

для пользовательской сортировки.

0 голосов
/ 20 мая 2009

Просто отсортируйте данные перед печатью во втором цикле 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>";
}
0 голосов
/ 20 мая 2009

См. Ниже, если вы хотите сделать это на стороне клиента.

Сортировка JSON по значениям

...