在 PHP 中解析和搜索 JSON

Parsing and searching through JSON in PHP

我需要一些帮助来解析和查看 JSON 结果 PHP。在下面的示例结果中,我需要检查技术的类别。

我期望的结果是,如果已找到类别分析,则使用 true 变量对其进行标记,并使用分析名称设置变量,例如“google analytics “

这是示例代码

foreach ($resp['technologies'] as $item) {
    if ($item['categories'][0] === 'analytics') {
        $found = true;
        $analyticsis= $item['name'];

这是我们正在查看的示例 JSON。

[{
    "url": "https://www.websiteexample.co.uk",
    "technologies": [{
      "slug": "google-analytics",
      "name": "Google Analytics",
      "versions": [],
      "trafficRank": 0,
      "categories": [{
          "id": 10,
          "slug": "analytics",
          "name": "Analytics"
        },
        {
          "id": 61,
          "slug": "saas",
          "name": "SaaS"
        }
      ]
    }

$item['categories'][0]是关联数组,analyticsslug元素中。

if ($item['categories'][0]['slug'] == 'analytics') {
    $found = true;
    $analyticsis = $item['name'];
}

您可能应该搜索所有类别,而不仅仅是检查 [0]

foreach ($item['categories'] as $category) {
    if ($category['slug'] == 'analytics') {
        $found = true;
        $analyticsis = $item['name'];
        break;
    }
}

首先,json是一个字符串。
如果有json,应该解析为:

$data = json_decode($json, true);

如果你的“json”是一个数组,它就不是json,而是一个数组。


搜索

只要遍历你的结构,当你找到你要找的东西时,停止并保存所有必要的数据:

$json = <<<'JSON'
[{
    "url": "https://www.websiteexample.co.uk",
    "technologies": [{
      "slug": "google-analytics",
      "name": "Google Analytics",
      "categories": [
        {"id": 10, "slug": "analytics", "name": "Analytics"},
        {"id": 61, "slug": "saas", "name": "SaaS"}
      ]
    }]
}]
JSON;

$data = json_decode($json, true);

$needle = 'analytics';
$foundTech = null;
$foundCategory = null;
foreach ($data as $resp) {
  foreach ($resp['technologies'] as $tech) {
    foreach ($tech['categories'] as $category) {
      if ($category['slug'] === $needle) {
        $foundTech = $tech;
        $foundCategory = $category;
        break 3;
      }
    }
  }
}
if ($foundCategory) {
  echo $foundTech['name'], PHP_EOL;
  echo $foundCategory['name'], PHP_EOL;
}
Google Analytics
Analytics

如果您需要在该结构中进行多次搜索,最好先创建一些 maps/indices。