I have two JSON files of same format, forexample
1st JSON File
{ "data": { "business": { "id": "3NzA0ZDli", "customers": { "pageInfo": { "currentPage": 1, "totalPages": 695, "totalCount": 1389 }, "edges": [ { "node": { "id": "QnVzaW5lc3M6Z", "name": "Joe Biden", "email": "joe@mail.com" } }, { "node": { "id": "QnVzaW5lc3M6Z", "name": "MULTIMEDIA PLUMBUM", "email": "mdi@mail.com" } } ] } } } }
2nd JSON file
{ "data": { "business": { "id": "3NzA0ZDli", "customers": { "pageInfo": { "currentPage": 2, "totalPages": 695, "totalCount": 1389 }, "edges": [ { "node": { "id": "QnVzaW7dQ8N", "name": "Mark", "email": "mark@mail.com" } }, { "node": { "id": "QnVzaW5l5Gy9", "name": "Trump", "email": "trump@mail.com" } } ] } } } }
Each user has a unique “id”, I want to get their id by searching their name in php, how can I do this
This is my PHP script
$json1 = file_get_contents("1.json"); $json2 = file_get_contents("2.json"); $result1 = json_decode($json1, true); $result2 = json_decode($json2, true); foreach ($result2 as $k => $v) { if ($v['data']['business']['edges']['customers']['node']['name'] == "Trump") break; } echo $result[$k]['data']['business']['edges']['customers']['node']['name']; //I want to get id for trump "QnVzaW5l5Gy9"
Each user has a unique “id”, I want to get their id by searching their name in php. How can I get id by searching name in both files at a time?
Thanks
Advertisement
Answer
Since you are looping through json file it will search inside of “data” so you can’t use $v['data']
Also since edges
is also array that have same values and you want to search inside of it you must make loop on that also
Here is example
foreach ($result2 as $k => $v) { foreach ($v['business']['customers']['edges'] as $val) { if ($val['node']['name'] == 'Trump') { echo '<pre>'; // and now you can access any of those values, echo $val['node']['id']; print_r($val['node']); echo '</pre>'; } } }
Output
Array ( [id] => QnVzaW5l5Gy9 [name] => Trump [email] => trump@mail.com )
EDIT
Since you want to search in both files at a same time you can put them into array and then use it like this
$json1 = file_get_contents("1.json"); $json2 = file_get_contents("2.json"); $result1 = json_decode($json1, true); $result2 = json_decode($json2, true); $joined_result = array($result1, $result2); foreach($joined_result as $val) { // this will take all nodes where you will search $node = $val['data']['business']['customers']['edges']; foreach ($node as $value) { if ($value['node']['name'] == 'Trump') { echo '<pre>'; print_r($value['node']); echo '</pre>'; } } }