Php 查找JSON文件是否包含字符串并返回机场名称
我有一个相当大的JSON文件,其中包含机场及其各自信息的完整列表(总共46000行) 我希望能够检查JSON文件是否包含ICAO,然后在变量中返回机场名称 理想情况下是这样的(仅作为示例) JSON摘录: 例子: 如果我输入ICAOPhp 查找JSON文件是否包含字符串并返回机场名称,php,json,Php,Json,我有一个相当大的JSON文件,其中包含机场及其各自信息的完整列表(总共46000行) 我希望能够检查JSON文件是否包含ICAO,然后在变量中返回机场名称 理想情况下是这样的(仅作为示例) JSON摘录: 例子: 如果我输入ICAOYARY我会得到机场名称Arrabury airport 个人尝试: 到目前为止,我已经成功地将所有json数据打印到一个网页中,如下所示: 使用以下代码: 国际航空运输协会代码 国际民航组织守则 机场名称 位置 城市 国家 但我不知道从这里到哪里去 谢谢。这是
YARY
我会得到机场名称Arrabury airport
个人尝试:
到目前为止,我已经成功地将所有json数据打印到一个网页中,如下所示:
使用以下代码:
国际航空运输协会代码
国际民航组织守则
机场名称
位置
城市
国家
但我不知道从这里到哪里去
谢谢。这是我的解决方案:
$condition='YARY';
$airports=array_过滤器($ARRAYdatas,函数($item)使用(&$condition){
返回isset($item->icao_代码)&&&$item->icao_代码==$condition;
});
$airport=array\u pop($airports);
$airportName=$airport$机场->机场名称:“”;
可能有一个更优雅或更快的解决方案,但我认为这样做很容易实现您的目标。以下是我的解决方案:
$condition='YARY';
$airports=array_过滤器($ARRAYdatas,函数($item)使用(&$condition){
返回isset($item->icao_代码)&&&$item->icao_代码==$condition;
});
$airport=array\u pop($airports);
$airportName=$airport$机场->机场名称:“”;
可能有一种更优雅或更快的解决方案,但我认为通过这种方式,实现您的目标非常容易。如果您熟悉回调,也可以使用:
function isICAO($Icao = NULL, $_json = array())
{
array_walk($_json, function($item, $key) use($Icao){
if($item->icao_code == $Icao) { echo $item->airport_name; }
});
}
// Print Airport name if icao_code is found. Else nothing.
echo isICAO("NTGA", $_json);
回拨前的老路
<?php
function isICAO($Icao = NULL, $_json = array())
{
foreach ($_json as $key => $item)
{
if($item->icao_code == $Icao)
{
return $item->airport_name;
}
}
return false;
}
if($Airport = isICAO("NTGA", $_json))
{
echo $Airport;
}
else
{
echo "Sorry, that ICAO could not be found";
}
?>
Javascript代码:
var json=[
{
“完整位置”:“阿纳、图阿莫图、法属波利尼西亚”,
“iata_代码”:“AAA”,
“城市”:“阿纳”,
“国际民航组织代码”:“NTGA”,
“国家”:“法属波利尼西亚”,
“机场名称”:“安那机场”
},
{
“完整位置”:“澳大利亚昆士兰阿拉伯里”,
“iata_代码”:“AAB”,
“城市”:“阿拉伯里”,
“国际民航组织代码”:“YARY”,
“国家”:“澳大利亚”,
“机场名称”:“阿拉伯里机场”
},
{
“完整位置”:“埃及埃尔阿里什”,
“iata_代码”:“AAC”,
“城市”:“埃尔阿里什”,
“国际民航组织代码”:“听到”,
“国家”:“埃及”,
“机场名称”:“埃尔阿里什国际机场”
}
];
国际民航组织的职能
{
var结果=[];
map(函数(值、索引){
如果(value.icao_code==icao){result.push(value);}
});
返回结果;
}
console.log(isICAO('HEAR'));
如果您熟悉回调,还可以使用:
function isICAO($Icao = NULL, $_json = array())
{
array_walk($_json, function($item, $key) use($Icao){
if($item->icao_code == $Icao) { echo $item->airport_name; }
});
}
// Print Airport name if icao_code is found. Else nothing.
echo isICAO("NTGA", $_json);
回拨前的老路
<?php
function isICAO($Icao = NULL, $_json = array())
{
foreach ($_json as $key => $item)
{
if($item->icao_code == $Icao)
{
return $item->airport_name;
}
}
return false;
}
if($Airport = isICAO("NTGA", $_json))
{
echo $Airport;
}
else
{
echo "Sorry, that ICAO could not be found";
}
?>
Javascript代码:
var json=[
{
“完整位置”:“阿纳、图阿莫图、法属波利尼西亚”,
“iata_代码”:“AAA”,
“城市”:“阿纳”,
“国际民航组织代码”:“NTGA”,
“国家”:“法属波利尼西亚”,
“机场名称”:“安那机场”
},
{
“完整位置”:“澳大利亚昆士兰阿拉伯里”,
“iata_代码”:“AAB”,
“城市”:“阿拉伯里”,
“国际民航组织代码”:“YARY”,
“国家”:“澳大利亚”,
“机场名称”:“阿拉伯里机场”
},
{
“完整位置”:“埃及埃尔阿里什”,
“iata_代码”:“AAC”,
“城市”:“埃尔阿里什”,
“国际民航组织代码”:“听到”,
“国家”:“埃及”,
“机场名称”:“埃尔阿里什国际机场”
}
];
国际民航组织的职能
{
var结果=[];
map(函数(值、索引){
如果(value.icao_code==icao){result.push(value);}
});
返回结果;
}
console.log(isICAO('HEAR'));
如果您希望获得一些性能提升,那么最好将json\u decode()
输出缓存为本机PHP格式,并包含该文件。假设在每个页面加载中都包含.json文件。(使用var_export()
将数据转储为PHP可读格式。)如果您希望获得一些性能提升,那么最好将json_decode()
输出缓存为本机PHP格式,并包含该文件。假设在每个页面加载中都包含.json文件。(使用var_export()
将数据转储为PHP可读格式。)谢谢,但这不是我需要的。我在找一些东西来返回国际民航组织的机场名称。谢谢,但这不是我需要的。我在寻找一些东西来返回国际民航组织的机场名称。这听起来像是一个有用的改变。你能把它放在上下文中吗?谢谢。您可能需要一个单独的解析器脚本,从中获取JSON文件的内容并将其解析为一个数组(就像您现在在脚本开头所做的那样)。解析器将数组保存到一个文件中file\u put\u contents()
等(请确保在var\u export
中的数组数据前面加上变量名和PHP open标记)。然后,在主文件中,代替每次解释JSON,只需将该文件与已解析的PHP数组一起包含。每当数据更新时,您只需运行JSON解析器一次。这是否提供了足够的上下文?为了便于查找,循环JSON数据并使用机场代码作为数组键将其转换为关联数组也很有用。然后你所需要做的就是if(isset($airports[$icao_code]){echo$airports[$icao_code]['airport_name'];}
左右,避免你在每次查询时过滤或迭代整个数组。这听起来是一个有用的改变。你能把它放在上下文中吗?谢谢。你可能想要一个单独的解析器
<?php
function isICAO($Icao = NULL, $_json = array())
{
foreach ($_json as $key => $item)
{
if($item->icao_code == $Icao)
{
return $item->airport_name;
}
}
return false;
}
if($Airport = isICAO("NTGA", $_json))
{
echo $Airport;
}
else
{
echo "Sorry, that ICAO could not be found";
}
?>
var json = [
{
"complete_location": "Anaa, Tuamotus, French Polynesia",
"iata_code": "AAA",
"city": "Anaa",
"icao_code": "NTGA",
"country": " French Polynesia",
"airport_name": "Anaa Airport"
},
{
"complete_location": "Arrabury, Queensland, Australia",
"iata_code": "AAB",
"city": "Arrabury",
"icao_code": "YARY",
"country": " Australia",
"airport_name": "Arrabury Airport"
},
{
"complete_location": "El Arish, Egypt",
"iata_code": "AAC",
"city": "El Arish",
"icao_code": "HEAR",
"country": " Egypt",
"airport_name": "El Arish International Airport"
}
];
function isICAO(Icao)
{
var result = [];
json.map(function(value, index) {
if(value.icao_code == Icao) { result.push(value); }
});
return result;
}
console.log(isICAO('HEAR'));
</script>