Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

php मर्ज जसन सरणियाँ

विस्तृत व्याख्या

आप जो कुंजी मान प्राप्त करते हैं उसके आधार पर आप JSON सरणी में शामिल हो सकते हैं बशर्ते आपको json_array() में शामिल होने के लिए आपको किस कुंजी के अंतर्गत देना होगा .

मैं json_objects पर विचार करने जा रहा हूं 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"}
]';
?>

इसलिए json_objects को मर्ज करने के लिए हमें पहले json_decode() का उपयोग करना होगा दोनों सरणियों के लिए जो हमने प्राप्त की हैं।

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

इसलिए json_decoded() . के लिए आउटपुट स्ट्रिंग इस प्रकार होगी।

पहली डीकोडेड स्ट्रिंग:

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

दूसरा डीकोडेड स्ट्रिंग:

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

इसलिए कोड के लिए कार्य इस प्रकार है।

मैंने PlayerID . पर विचार किया है अद्वितीय . के रूप में पैरामीटर और सरणी को जोड़ दिया है।

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

आपको इस तरह के फ़ंक्शन को उस कोड से कॉल करने की आवश्यकता है जहां आपको array_merge() perform करने की आवश्यकता है संचालन।

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

अंत में सेटअप के साथ पूरा कोड इस तरह दिखाई देता है।

पूर्ण कोड:

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

मर्ज किए गए सरणी को देखने के लिए आपको print_r() . की आवश्यकता होगी सरणी और इसे देखें।

ऐरे आउटपुट कोड:

print_r($merged_array);

आउटपुट:

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

यदि आपको JSON आउटपुट के रूप में इसकी आवश्यकता है तो आपको json_encode() . करना होगा प्राप्त array() और संचालन करें।

JSON आउटपुट कोड:

print_r(json_ecode($merged_array));

आउटपुट:

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

सबसे तेज़ निष्पादन विधि इस तरह अपनाएगी

आपको json_strings को डीकोड करना होगा और फिर आपको उन दोनों को foreach() के माध्यम से llop करना होगा। और फिर array() . के साथ संयोजित करें कि आपको इसमें शामिल होने की आवश्यकता है।

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

आउटपुट:

[{"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. विंडोज़ पर इंस्टॉलेशन के बिना MySQL चलाना/शुरू करना

  2. वेबसाइट बोली लगाने के लिए उलटी गिनती घड़ी कैसे बनाएं

  3. कॉलम नाम प्राप्त करें जिसका एक पंक्ति में अधिकतम मान है sql

  4. मैं mysql_* फ़ंक्शंस का उपयोग करके एक से अधिक बार MySQL परिणाम सेट के माध्यम से लूप कैसे कर सकता हूं?

  5. MySQL को --स्किप-अनुदान-तालिकाओं के साथ कैसे प्रारंभ करें?