我的json结果数组返回如下:
["AuctionInfo"]=>
[0]=>
array(13) {
["price"]=>
int(3000)
}
[1]=>
array(13) {
["price"]=>
int(5000)
我试图使用的PHP代码只是
<?php
$decoded = json_decode("my json api", true);
foreach($decoded['AuctionInfo'] as $item) {
usort($decoded['AuctionInfo']['price']);?>
<tr>
<td><?php echo $item['price']; ?></td>
</tr>
<?php } ?>
我尝试在usort($decoded['AuctionInfo']['price']
之后添加foreach
,但这只会引发错误,是否有人能指出正确的方向?
我想做的就是按降序排序$decoded['AuctionInfo']['price']
答案 0 :(得分:7)
这样的事情应该有效。
<?php
$data = array(
'AuctionInfo' => array(
array('price' => 500),
array('price' => 3000)
)
);
$decoded = $data['AuctionInfo'];
foreach($decoded as $item) {
echo $item['price'] . PHP_EOL;
}
usort($decoded, function($a, $b) { return $a['price'] < $b['price'] ? 1 : -1; });
foreach($decoded as $item) {
echo $item['price'] . PHP_EOL;
}
答案 1 :(得分:0)
您忘记了代码中还有另一级索引。 例如,这将是有效的
<?php echo $decoded['AuctionInfo'][1]['price'] ?>
>5000
但是你当前拥有的是$decoded['AuctionInfo']['price']
,它不会产生数组,它会在整数索引中搜索索引price
。
有几种方法可以解决这个问题,最简单的方法是创建自己的比较函数,检查比较元素中的price
:
function price_cmp($a, $b){
if ($a["price"] == $b["price"]) {
return 0;
}
else if ($a["price"] < $b["price"]){
return 1;
}
else{
return -1;
}
}
usort($decoded, "price_cmp");