Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

php hợp nhất mảng json

Giải thích chi tiết

Bạn có thể tham gia vào mảng JSON dựa trên giá trị khóa mà bạn nhận được với điều kiện bạn phải cung cấp khóa mà bạn có để tham gia json_array() .

Tôi sẽ xem xét json_objects như sau dựa trên mã 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"}
]';
?>

Do đó, để hợp nhất json_objects, trước tiên chúng ta phải sử dụng json_decode() cho cả hai mảng mà chúng tôi đã thu được.

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

Do đó đầu ra cho json_decoded() chuỗi sẽ như sau.

Chuỗi được giải mã đầu tiên:

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 ) ) 

Chuỗi được giải mã thứ hai:

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

Do đó, chức năng của mã như sau.

Tôi đã xem xét PlayerID DUY NHẤT Tham số và đã kết hợp mảng.

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;
  }

Bạn cần gọi hàm như thế này từ mã nơi bạn cần thực hiện array_merge() hoạt động.

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

Cuối cùng, mã đầy đủ xuất hiện như thế này với thiết lập.

Mã đầy đủ:

<?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);
?>

Để xem mảng đã hợp nhất, bạn cần print_r() mảng và xem nó.

Mã đầu ra của mảng:

print_r($merged_array);

Đầu ra:

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 ) )

Nếu bạn cần nó làm đầu ra JSON, bạn phải json_encode() array() thu được và thực hiện các hoạt động.

Mã đầu ra JSON:

print_r(json_ecode($merged_array));

Đầu ra:

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

Phương pháp thực thi nhanh nhất sẽ áp dụng theo cách này

Bạn cần giải mã json_strings và sau đó bạn phải giải mã cả hai thông qua foreach() và sau đó kết hợp với array() mà bạn cần tham gia với nó.

$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.

Đầu ra:

[{"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. Ánh xạ một Bộ kết quả JDBC với một đối tượng

  2. Tại sao không có khóa nào được sử dụng trong GIẢI THÍCH này?

  3. Mật khẩu root mysql homebrew của MacOSX

  4. Cắt bớt dữ liệu:Giá trị ngày giờ không chính xác:''

  5. Sắp xếp tự nhiên trong MySQL