2016-07-20 11 views
0

Ich habe ein wenig gesucht und gefunden eine Antwort, die teilweise tut, was dabei Ich bin interessiert, siehe: Sorting a JSON array in PHPRecursively ein JSON-Array Sortierung

Ich habe einige JSON decodiert, der so aussieht, nur eine Probe.

{ 
    "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" 

     } 
    ] 
} 

Was ich tun möchte, ist alles alphabetisch zu sortieren, so dass es einfacher zu lesen und einheitlich ist. Das was ich sehen würde ist:

{ 
    "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" 
} 

Jedes Element ist alphabetisch sortiert. Ist das möglich ?

+0

kein Array ist, werden nur Objekte –

+0

@LarsStegelitz In PHP würde sie assoziative Arrays sein. – Barmar

+0

Schreiben Sie eine rekursive Funktion, die 'ksort()' verwendet. Es muss das Array-Argument als Referenzparameter verwenden. – Barmar

Antwort

0

Ziemlich einfach

$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); 

Nachweis der Lösung hier

https://3v4l.org/qUAA0

+0

Das wird funktionieren. Es ist eine Art von Eitelkeit und Entwicklung, aber es macht es wirklich einfach, Datensätze für Antworten zu vergleichen, die die gleiche Struktur, aber unterschiedliche Daten haben. Vielen Dank. – sscotti