2016-05-24 2 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" 
    }] 
    } 

     } 

私は、foreachループでJSONファイルの結果を表示:あなたが見ることができるように

$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_multisortを使用する必要があります。 Check 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/>"; 
     } 
    } 
} 

結果: `usort($データ - > info->コレクション、機能($、$ b)は:

11 - 10 
9 - 8 
7 - 6 
+0

いいえ、あなたがいないために、この仕事をしました{$ a-> Pic- $ b-> Pic;}) 'を返します。 (あるいは、 '$ a'と' $ b'を逆にして、私は忘れる傾向があります。) – deceze

+0

これは正しいですか? –

+0

なぜですか?問題はどこだ? –