Sorting JSON Output in PHP

12,947

Solution 1

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');

Solution 2

See here:

Sorting an associative array in PHP

for user-defined sorting.

Share:
12,947
Tom
Author by

Tom

Updated on June 04, 2022

Comments

  • Tom
    Tom almost 2 years

    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?

    • Gumbo
      Gumbo almost 15 years
      And what kind of sort would be “2” or “3”?
    • Tom
      Tom almost 15 years
      The order of the row as it was created in the backend