Skip to content
Advertisement

how to search inside two JSON files at a time in PHP

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>';
        }
    }
}
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement