Detaljeret forklaring
Du kan tilslutte dig JSON-arrayet baseret på den nøgleværdi, du opnår, forudsat at du skal angive, under hvilken nøgle du skal tilslutte digjson_array() .
Jeg vil overveje json_objects som følger baseret på PHP-koden.
Derfor skal vi først bruge json_decode() for at flette json_objekterne sammen for begge de arrays, som vi har opnået.
$decode_one =json_decode($array1,TRUE);$decode_two =json_decode($array2,TRUE);
Derfor outputtet for json_decoded() streng vil være som følger.
Første afkodede streng:
Array ( [0] => Array ( [PlayerID] => 17794204 [brugernavn] => Vandiel [castleCount] => 9 [NotUpd] => 1476253231000 ) [1] => Array ( [PlayerID] => 21532584 [brugernavn] => Mayland [castleCount] => 1 [NotUpd] => 0 ) [2] => Array ( [PlayerID] => 21539896 [brugernavn] => Dana [castleCount] => 9 [NotUpd] => 0 ) ) Anden afkodet streng:
Array ( [0] => Array ( [PlayerID] => 17794204 [Trouble] => 2 ) [1] => Array ( [PlayerID] => 21532584 [Trouble] => 0 ) [2 ] => Array ( [PlayerID] => 21539896 [Trouble] => 0 ) ) Derfor er kodens funktion som følger.
Jeg har overvejet PlayerID som den UNIKKE Parameter og har kombineret arrayet.
funktion merge_json_decoded_arrays($decode_one,$decode_two) { $data =array(); $arrayAB =array_merge($decode_one,$decode_two); foreach ($arrayAB som $værdi) { $id =$værdi['PlayerID']; if (!isset($data[$id])) { $data[$id] =array(); } $data[$id] =array_merge($data[$id],$værdi); } returner $data; }
Du skal kalde funktionen som denne fra koden, hvor du skal udføre array_merge() operationer.
$merged_array =merge_json_decoded_arrays($decode_one,$decode_two); Endelig vises den fulde kode således med opsætningen.
Fuld kode:
For at se det flettede array skal du print_r() arrayet og se det.
Array-outputkode:
print_r($merged_array); Output:
Array ( [17794204] => Array ( [PlayerID] => 17794204 [brugernavn] => Vandiel [castleCount] => 9 [NotUpd] => 1476253231000 [Trouble] => 2 ) [215325> Array ( [PlayerID] => 21532584 [brugernavn] => Mayland [castleCount] => 1 [NotUpd] => 0 [Trouble] => 0 ) [21539896] => Array ( [PlayerID] => 21539896 [brugernavn] => Dana [castleCount] => 9 [NotUpd] => 0 [Trouble] => 0 ) )
Hvis du har brug for det som JSON-output, skal du json_encode() den opnåede array() og udfør handlingerne.
JSON-outputkode:
print_r(json_ecode($merged_array)); Output:
{"17794204":{"PlayerID":"17794204","userName":"Vandiel","castleCount":"9","NotUpd":"1476253231000","Trouble":"2 "},"21532584":{"PlayerID":"21532584","userName":"Mayland","castleCount":"1","NotUpd":"0","Trouble":"0"}," 21539896":{"PlayerID":"21539896","userName":"Dana","castleCount":"9","NotUpd":"0","Trouble":"0"}}
Hurtigste udførelsesmetode vil tage op på denne måde
Du er nødt til at afkode json_strings, og så skal du løbe dem begge gennem foreach() og kombiner derefter med array() at du skal slutte dig til det.
$decode_one =json_decode($array1,TRUE);$decode_two =json_decode($array2,TRUE);foreach ($decode_one som $key => $first_value) { foreach ($decode_two som $key_two => $second_value) { if($first_value['PlayerID']==$second_value['PlayerID']) { $decode_one[$key]['Trouble'] =$second_value['Trouble'];//Her hvis nøglen eksisterer det vil slutte sig til problemerne med det første afkodede array } else {} }}$combined_output =json_encode($decode_one); //Dette vil returnere output i json-format. Output:
[{"PlayerID":"17794204","userName":"Vandiel","castleCount":"9","NotUpd":"1476253231000","Trouble":"2"},{ "PlayerID":"21532584","userName":"Mayland","castleCount":"1","NotUpd":"0","Trouble":"0"},{"PlayerID":"21539896", "userName":"Dana","castleCount":"9","NotUpd":"0","Trouble":"0"}]