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