2016-05-24 135 views
-1

這裏是我的JSON文件:排序JSON值由自己的價值

{ 
"example": "1", 
"example2": 2, 
"text": "3", 
"info": { 
    "agent": 4, 
    "sum": 5, 
    "collection": [{ 
     "Name": "6", 
     "Pic": "7" 
    }, { 
     "Name": "8", 
     "Pic": "9" 
    }, { 
     "Name": "10", 
     "Pic": "11" 
    }] 
    } 

     } 

我顯示JSON文件的foreach循環的結果:

$data = json_decode(file_get_contents('http://linktojson.com')); 
foreach($data->info->collection as $key){ 

    echo $key->Pic; 
    echo $key->Name; 

    } 

正如你所看到的,「產品圖」有不同的數字。我如何使用sort()在foreach循環的頂部顯示最大的數字顯示,並在底部顯示最低的顯示?

+0

在array_multisort這樣做對你的工作 –

回答

-1

您需要在這裏使用array_multisortCheck Online

$json = '{ 
"example": "1", 
"example2": 2, 
"text": "3", 
"info": { 
    "agent": 4, 
    "sum": 5, 
    "collection": [{ 
     "Name": "6", 
     "Pic": "7" 
     }, { 
      "Name": "8", 
      "Pic": "9" 
     }, { 
      "Name": "10", 
      "Pic": "11" 
     }] 
    } 
}'; 

$result = json_decode ($json, true); 
foreach($result as $key => $value){ 
    if($key == 'info'){ 
     $keys = array_keys($value['collection']); 
     array_multisort(
      array_column($value['collection'], 'Pic'), SORT_DESC, SORT_NUMERIC, $value['collection'], $keys 
     ); 
     $value = array_combine($keys, $value['collection']); 
     foreach($value as $val){ 
      echo $val['Pic']." - ".$val['Name']."<br/>"; 
     } 
    } 
} 

結果:

11 - 10 
9 - 8 
7 - 6 
+0

不,你不這樣做:'usort($數據 - >信息 - >集合,函數($ A,$ B) {return $ a-> Pic - $ b-> Pic;})'。 (或者''a''和'$ b'反過來,我傾向於忘記。) – deceze

+0

這個答案正確嗎? –

+0

爲什麼不能?哪裏有問題? –