sql >> Database teknologi >  >> RDS >> Mysql

php flette json-arrays

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


  1. sløjfe gennem multidimensional array i php og indsæt mysql (aktiedata)

  2. mySQL vælg I området

  3. Hvordan udvider jeg kommaseparerede værdier til separate rækker ved hjælp af SQL Server 2005?

  4. Noget hurtigere end get_headers()