如何基于php中的一个键值对JSON对象进行排序和显示

时间:2015-10-12 15:09:52

标签: php html json sorting

我通过JSON接收数据,我可以读取数据并通过一个大列表中的图标显示它们是如何被接收的。我想要做的是按价格对对象进行排序,并在页面的两列中将它们显示为图标。

在一列中,免费物品(价格= 0),在另一列中,付费物品(价格> 0)

我认为我必须使用usort(我不太了解),但我不知道,它将如何放入我现有的代码以及如何创建div以显示两个图标列左右。

这是我现在的简化代码:

$arr = json_decode($jsondata,true);

    if ($arr['resultCount'] > '0') {

    foreach($arr['results'] as $item) {
        $icon = $item['artwork'];
        $title = $item['trackName'];
        $price = $item['price'];

        if ($price == 0 ) {

        echo '<div class="iconsearch" style="background-image: url('.$icon.');"><a href="'.$title.'">'.$title.'<img src="images/iconmask.png"/></a></div>';
        } else {
        echo '<div class="iconsearch" style="background-image: url('.$icon.');"><a href="'.$title.'">'.$title.'<img src="images/iconmask.png"/></a></div>';
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您需要对结果进行排序。为此,您应该使用usort并提供自己的功能:

  

usort - 使用用户定义的比较对数组按值排序   功能

尝试以下方法:

if ($arr['resultCount'] > 0) {

    usort($arr['results'], function ($a, $b) {
        return $a["price"] > $b["price"];
    });

    var_dump($arr['results']);

    //.. now that its sorted, you can iterate and do as you wish

}

来源:http://php.net/manual/en/function.usort.php