Mysql
 sql >> Baza danych >  >> RDS >> Mysql

php scalaj tablice json

Szczegółowe wyjaśnienie

Możesz dołączyć do tablicy JSON na podstawie otrzymanej wartości klucza, pod warunkiem, że musisz podać pod którym kluczem musisz dołączyć do json_array() .

Zamierzam rozważyć json_objects w następujący sposób w oparciu o kod PHP.

<?php
$array1 = '[
{"PlayerID":"17794204","userName":"Vandiel","castleCount":"9","NotUpd":"1476253231000"},
{"PlayerID":"21532584","userName":"Mayland","castleCount":"1","NotUpd":"0"},
{"PlayerID":"21539896","userName":"Dana","castleCount":"9","NotUpd":"0"}
]';
$array2 = '[
{"PlayerID":"17794204","Trouble":"2"},
{"PlayerID":"21532584","Trouble":"0"},
{"PlayerID":"21539896","Trouble":"0"}
]';
?>

Dlatego w celu połączenia json_objects musimy najpierw użyć json_decode() dla obu otrzymanych przez nas tablic.

$decode_one = json_decode($array1,TRUE);
$decode_two = json_decode($array2,TRUE);

Stąd wynik dla json_decoded() ciąg będzie następujący.

Pierwszy zdekodowany ciąg:

Array ( [0] => Array ( [PlayerID] => 17794204 [userName] => Vandiel [castleCount] => 9 [NotUpd] => 1476253231000 ) [1] => Array ( [PlayerID] => 21532584 [userName] => Mayland [castleCount] => 1 [NotUpd] => 0 ) [2] => Array ( [PlayerID] => 21539896 [userName] => Dana [castleCount] => 9 [NotUpd] => 0 ) ) 

Drugi zdekodowany ciąg:

Array ( [0] => Array ( [PlayerID] => 17794204 [Trouble] => 2 ) [1] => Array ( [PlayerID] => 21532584 [Trouble] => 0 ) [2] => Array ( [PlayerID] => 21539896 [Trouble] => 0 ) )

Stąd funkcja kodu jest następująca.

Rozważyłem Identyfikator gracza jako UNIKALNY Parametr i połączył tablicę.

function merge_json_decoded_arrays($decode_one,$decode_two) {
    $data = array();
    $arrayAB = array_merge($decode_one,$decode_two);
    foreach ($arrayAB as $value) {
      $id = $value['PlayerID'];
      if (!isset($data[$id])) {
        $data[$id] = array();
      }
      $data[$id] = array_merge($data[$id],$value);
    }
    return $data;
  }

Musisz wywołać taką funkcję z kodu, w którym musisz wykonać array_merge() operacje.

$merged_array = merge_json_decoded_arrays($decode_one,$decode_two);

W końcu pełny kod pojawia się w ten sposób podczas konfiguracji.

Pełny kod:

<?php
$array1 = '[
{"PlayerID":"17794204","userName":"Vandiel","castleCount":"9","NotUpd":"1476253231000"},
{"PlayerID":"21532584","userName":"Mayland","castleCount":"1","NotUpd":"0"},
{"PlayerID":"21539896","userName":"Dana","castleCount":"9","NotUpd":"0"}
]';
$array2 = '[
{"PlayerID":"17794204","Trouble":"2"},
{"PlayerID":"21532584","Trouble":"0"},
{"PlayerID":"21539896","Trouble":"0"}
]';

$decode_one = json_decode($array1,TRUE);
$decode_two = json_decode($array2,TRUE);

function merge_json_decoded_arrays($decode_one,$decode_two) {
    $data = array();
    $arrayAB = array_merge($decode_one,$decode_two);
    foreach ($arrayAB as $value) {
      $id = $value['PlayerID'];
      if (!isset($data[$id])) {
        $data[$id] = array();
      }
      $data[$id] = array_merge($data[$id],$value);
    }
    return $data;
  }
$merged_array = merge_json_decoded_arrays($decode_one,$decode_two);
?>

Aby wyświetlić połączoną tablicę, musisz print_r() tablicę i wyświetlić ją.

Kod wyjścia tablicy:

print_r($merged_array);

Wyjście:

Array ( [17794204] => Array ( [PlayerID] => 17794204 [userName] => Vandiel [castleCount] => 9 [NotUpd] => 1476253231000 [Trouble] => 2 ) [21532584] => Array ( [PlayerID] => 21532584 [userName] => Mayland [castleCount] => 1 [NotUpd] => 0 [Trouble] => 0 ) [21539896] => Array ( [PlayerID] => 21539896 [userName] => Dana [castleCount] => 9 [NotUpd] => 0 [Trouble] => 0 ) )

Jeśli potrzebujesz go jako wyjścia JSON, musisz użyć json_encode() uzyskany array() i wykonać operacje.

Kod wyjściowy JSON:

print_r(json_ecode($merged_array));

Wyjście:

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

Najszybsza metoda wykonania zajmie w ten sposób

Musisz zdekodować json_strings, a następnie musisz przeciągnąć oba z nich przez foreach() a następnie połącz z array() że musisz do niego dołączyć.

$decode_one = json_decode($array1,TRUE);
$decode_two = json_decode($array2,TRUE);
foreach ($decode_one as $key => $first_value) {
    foreach ($decode_two as $key_two => $second_value) {
        if($first_value['PlayerID']==$second_value['PlayerID'])
        { $decode_one[$key]['Trouble'] = $second_value['Trouble'];//Here if the key exists it will join the Trouble with the First decoded array }
        else {}
    }
}
$combined_output = json_encode($decode_one); //This will return the output in json format.

Wyjście:

[{"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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odmowa dostępu przy tworzeniu początkowej bazy danych – jak przyznać właściwy dostęp?

  2. Jak podłączyć node.js do serwera mysql i wamp/xampp?

  3. Jak policzyć liczbę wystąpień każdego identyfikatora klucza obcego w tabeli?

  4. Wyświetlanie zbioru danych JSON jako tabeli z Node.js i Express

  5. MySql - Jak połączyć dwa stoły, ale z niedokładnymi wartościami, ale podobnymi