用php提取JSON变量用于电子邮件


extract JSON variables with php for email use

我很难将JSON值(通过使用URL获得)提取到电子邮件变量中。下面的代码可以工作(我已经删除了可识别和可用的数据)。

$addr = "https://98905:Twmdf56sn0cb@geoip.maxmind.com/geoip/v2.1/insights/".$ipaddr;
// fetching geoip data in JSON format
$json = (file_get_contents($addr)); 
//parsing JSON format to object format
$obj = json_decode($json); 
// assigning values to separate variables for email message
$var_country = $obj->country->names->en;
$var_city = $obj->city->names->en;
$var_city_confidence = $obj->city->confidence->en;
$var_city_geoname_id = $obj->city->geoname_id->en;
$var_location = $obj->location->accuracy_radius->en;enter code here

然而,一组数据是一个数组,看起来像这样(可识别和可用的数据擦除):

"subdivisions":[{"geoname_id":5166838,"iso_code":"NY","confidence":24,"names":{"ja":"ニューヨーク州","fr":"New  York","ru":"Нью-Йорк","en":"New York","zh-CN":"纽约州","de":"New York","pt-BR":"Nova Iorque","es":"Nueva York"}}]

我的困难在于从subdivision multi-array中提取"names"en"部分。前面的数组都是单个单元,这个是多个单元,我很难从细分中深入到"names"en"部分,并使用与上面相同的过程将该值放入数组中。

如果您只是想获得en键,您可以这样做:

$objects->subdivisions[0]->names->en;

如果你想检索每组数据,像这样循环它们:

foreach($objects->subdivisions[0]->names as $key => $value) {
    echo $key . ' --- ' . $value . '<br />';
}

Try with

$p=json_decode('{"subdivisions":[{"geoname_id":5166838,"iso_code":"NY","confidence":24,"names":{"ja":"ニューヨーク州","fr":"New  York","ru":"Нью-Йорк","en":"New York","zh-CN":"纽约州","de":"New York","pt-BR":"Nova Iorque","es":"Nueva York"}}]}');
$enNames = array();
foreach($p->subdivisions as $subdivision){
    $enNames[]=$subdivision->names->en;
}
print_r($enNames);