1

I've got the following 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] }                         
    ]
}                       
]
}

And this PHP to output it:

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>";

}

What I would like to do is sort the ouput based on the sort value in the JSON, any ideas?

2
  • And what kind of sort would be “2” or “3”? Commented May 20, 2009 at 12:46
  • 1
    The order of the row as it was created in the backend Commented May 20, 2009 at 12:53

4 Answers 4

4

Use 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');
Sign up to request clarification or add additional context in comments.

Comments

2

See here:

Sorting an associative array in PHP

for user-defined sorting.

Comments

0

See following if you want to do it on client side.

Sorting JSON by values

Comments

0

Just sort the data before printing it in the second foreach loop:

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>";
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.