在 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]
是关联数组,analytics
在slug
元素中。
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。
我需要一些帮助来解析和查看 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]
是关联数组,analytics
在slug
元素中。
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。