我有一个我创建的JSON文件,我想从最大的价格值中排序。
JSON是这样的:
[
{
"username": "elbugato",
"sold": 19,
"qmimi": 38.5
},
{
"username": "Pablo",
"sold": 12,
"qmimi": 42
},
{
"username": "Hqstuff",
"sold": 0,
"qmimi": "0"
},
{
"username": "matchspamm3rs",
"sold": 0,
"qmimi": "0"
},
{
"username": "Pachenko",
"sold": 1,
"qmimi": 1.1
},
我想从最高值
对qmimi进行排序我的PHP代码是这样的。
$sellertop8json = json_decode(get_html('link'));
$i = 1;
sort($sellertop8json->qmimi, SORT_NUMERIC);
foreach($sellertop8json as $top8){
max($top8);
if (++$i == 8) break;
echo '<tr>
<td>'.$top8->username.'</td>
<td># '.$top8->sold.'</td>
<td>$ '.$top8->qmimi.'</td>
</tr>
';
}
但他们并没有从最大的价值中分类 结果我得到了:
看看&#34; Pachenko&#34;,他正在追踪一个拥有&#34; 0&#34;赢得的。
谢谢 抱歉我的英文不好
P.S:JSON ISN&#39;原来,我从谷歌浏览器上使用的某些扩展程序中复制,所以JSON不是问题所在。
答案 0 :(得分:0)
您需要使用usort
并提供比较元素字段的自定义函数:
usort($sellertop8json, function($a, $b) {
return $a->qmimi == $b->qmimi ? 0 :
$a->qmimi < $b->qmimi ? 1 : -1;
}
);
如果元素相等,则比较函数必须返回0
,如果第一个元素较低,则小于0
,如果第二个元素较高,则小于0
。
这可能会让您感到有点困惑,因为您要从最高位进行排序,因此在比较中交换标志 - 请参阅比较的最后部分。