我正在使用php脚本获取json数据,并且输出看起来像这样-
api":{
"status":200
"message":"GET ...."
"results":15
"filters":[...]
"standings":[
0:{
"league":"standard"
"teamId":"1"
"seasonYear":"2018"
"conference":{4 items
"name":"east"
"rank":"12"
"win":"16"
"loss":"36"
}
"division":{
"name":"southeast"
"rank":"5"
"win":"6"
"loss":"10"
}
"winPercentage":".354"
"lossPercentage":".646"
}
1:{...} ...
我正在尝试使用standings->conference->rank
键/值中的值对“积分”数组进行排序。
这就是我尝试过的-
..
$response = 'api url';
$items = json_decode($response->body->api->standings);
foreach ($items as $item) {
usort($item,function($a, $b) {
return $a->conference->rank < $b->conference->rank ? -1 : 1;
});
echo $item->conference->rank;
}
但是它不输出任何东西。如果没有json_decode
,它将输出原始顺序。我想念什么?
答案 0 :(得分:0)
您需要将json字符串传递给json_decode
。我假设$response->body
是您的字符串,所以您这样做:
$result = json_decode($response->body);
接下来,您不需要迭代数组,usort
函数将为您完成此操作。
usort($result->api->standings, function($a, $b) {
return $a->conference->rank - $b->conference->rank;
});
答案 1 :(得分:0)
如果您使用的是php 7+,则可以使用spaceship(<=>)运算符
$items = json_decode($response->body->api->standings);
usort($item,function($a, $b) {
return $a->conference->rank <=> $b->conference->rank;
});
PHP 5.6或更低版本
$items = ($arr->api->standings);
usort($items,function($a, $b) {
if($a->conference->rank == $b->conference->rank){
return 0;
}
return ($a->conference->rank < $b->conference->rank) ? -1 : 1;
});
print_r($items);