2016-07-20 24 views
0

をソート私は少しを見て、参照、部分的に私がやってに興味を持って何が答えを見つけた:Sorting a JSON array in PHPは、再帰的にJSON配列

私はこれだけのサンプルのように見えるいくつかのデコードされたJSONを持っています。

{ 
    "status": "OK", 
    "page": { 
     "rows": 5000, 
     "more": 0, 
     "number": 1 
    }, 
    "accounts": [ 
     { 
      "connected": 0, 
      "settings": { 
       "link_first_study_only": "0", 
       "update_study_source_on_notify": "1", 
       "link_external_whitelist": "", 
       "other_ingress_tags": "" 
      }, 
      "must_approve_upload": 0, 
      "css": null, 
      "share_via_gateway": 0, 
      "password_expire": 90, 
      "vanity": "medpics" 

     } 
    ] 
} 

私がしたいのは、すべてをアルファベット順に並べ替えて、読みやすく、統一されたものにすることです。だから、私が見るものは:

{ 
    "accounts": [ 
     { 
      "css": null, 
      "connected": 0, 
      "must_approve_upload": 0, 
      "password_expire": 90, 
      "settings": { 

       "link_external_whitelist": "", 
       "link_first_study_only": "0", 
       "other_ingress_tags": "", 
       "update_study_source_on_notify": "1" 
      }, 

      "share_via_gateway": 0, 
      "vanity": "medpics" 
     } 
    ], 
    "page": { 
     "more": 0, 
     "number": 1, 
     "rows": 5000, 
    } 
    "status": "OK" 
} 

すべての要素はアルファベット順にソートされています。それは可能ですか?

+0

何の配列が存在しない、彼らだけが連想配列になりますPHPで –

+0

@LarsStegelitzオブジェクト。 – Barmar

+0

'ksort()'を使う再帰関数を書く。配列引数を参照パラメータとして取る必要があります。 – Barmar

答えて

0

かなり簡単

$json = <<<JSON 
{ 
    "status": "OK", 
    "page": { 
     "rows": 5000, 
     "more": 0, 
     "number": 1 
    }, 
    "accounts": [ 
     { 
      "connected": 0, 
      "settings": { 
       "link_first_study_only": "0", 
       "update_study_source_on_notify": "1", 
       "link_external_whitelist": "", 
       "other_ingress_tags": "" 
      }, 
      "must_approve_upload": 0, 
      "css": null, 
      "share_via_gateway": 0, 
      "password_expire": 90, 
      "vanity": "medpics" 

     } 
    ] 
} 
JSON; 

$json = json_decode($json, true); 

function ksort_recursive(&$array) { 
    ksort($array); 
    foreach ($array as &$value) { 
     if (is_array($value)) { 
      ksort_recursive($value); 
     } 
    } 
} 

ksort_recursive($json); 

print_r($json); 

ここソリューションの証明

https://3v4l.org/qUAA0

+0

それは動作します。それは虚栄心や開発の一種ですが、構造は同じでデータは異なるレスポンスのレコードを視覚的に比較するのは本当に簡単です。ありがとう。 – sscotti

関連する問題