विस्तृत व्याख्या
आप जो कुंजी मान प्राप्त करते हैं उसके आधार पर आप 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"}]