2017-07-18 2 views
0

Ich mag würde wissen, wie mein Array alphabetisch zu sortieren, die ist wieSortieren einer Tabelle ähnlich JSON

[ 
    {"people":"Julien SMITH","uid":"598"}, 
    {"people":"John SMITH","uid":"7232"} 
] 

ich mit

versucht
array_multisort($myArray['people'],SORT_ASC,$myArray['uid']) 

Aber natürlich ist es nicht, weil die Menschen arbeiten und uid sind nicht wirklich Spalten der Tabelle ...

ich nicht etwas ähnliches wie meinem Fall finden ..

Danke für Ihre Hilfe

Antwort

1

Verwenden usort() Sortierfunktion anwenden. Es wird genau das tun, was Sie wollen.

$jsonObj = '[ 
{"people":"Julien SMITH","uid":"598"}, 
{"people":"Don SMITH","uid":"7232"}, 
{"people":"Allan SMITH","uid":"3232"} 
]'; 

$arrObj = json_decode($jsonObj,true); 

function build_sorter($key) { 
return function ($a, $b) use ($key) { 
    return strnatcmp($a[$key], $b[$key]); 
}; 
} 

usort($arrObj, build_sorter('people')); 

foreach ($arrObj as $item) { 
echo $item['people'] . ', ' . $item['uid'] . "n"; 
} 
+0

Dank es funktioniert super ! – Srithovic

0

Zuerst müssen Sie Ihr JSON-Objekt in Array konvertieren. Dann können Sie

$json_obj = '[ 
    {"people":"Julien SMITH","uid":"598"}, 
    {"people":"John SMITH","uid":"7232"} 
]'; 
$myArray = json_decode($json_obj,true); 

array_multisort($myArray,SORT_ASC); 
echo json_encode($myArray); // op: [{"people":"John SMITH","uid":"7232"},{"people":"Julien SMITH","uid":"598"}] 
+0

Es ist nicht wirklich funktioniert, weil ich ein Array wie JSON zurückkommen müssen, et, wenn ich das tun, was Sie sagen, dann arbeiten ... Ich kehre json_encode ($ arr), ist es nicht – Srithovic