如果国家/地区不在数组中,我如何选择第一个数组?
Posted
技术标签:
【中文标题】如果国家/地区不在数组中,我如何选择第一个数组?【英文标题】:How can I select first array if country not in array? 【发布时间】:2016-10-03 09:20:53 【问题描述】:我正在使用 php geoip_country_code_by_name 函数从如下所示的数组中为不同国家/地区提供不同的内容:
<?php
$content = array(
'GB' => array(
'meta_description' => "Description is here",
'social_title' => "Title here",
'country_content_js' => "js/index.js",
),
'BR' => array(
'meta_description' => "Different Description is here",
'social_title' => "Another Title here",
'country_content_js' => "js/index-2.js",
),
);
?>
如何检查用户所在国家/地区是否在数组中,如果没有将“GB”设置为默认值?
我正在使用它来检查国家/地区:
$country = ( isset($_GET['country']) && !empty($_GET['country']) ? $_GET['country'] : ( isset($_SESSION['country']) && !empty($_SESSION['country']) ? $_SESSION['country'] : ( isset($_COOKIE['country']) && !empty($_COOKIE['country']) ? $_COOKIE['country'] : geoip_country_code_by_name(ip()) ) ) );
【问题讨论】:
也许你应该考虑in_array() 嗯,这取决于您如何检查国家/地区是否不在数组中,一种方法是使用三元运算符。 我不确定如何检查该国家/地区是否不在数组中 【参考方案1】:首先检查国家代码是否在$content
数组中作为键,如果没有,则将第一个数组作为默认值。要检查密钥是否存在于数组中,请使用 array_key_exists()。
这样,
$countrycode="IN";
if(!array_key_exists($countrycode,$content))
$countryarray=$content[0];
else
$countryarray=$content[$countrycode];
以上代码将返回国家/地区的内容(如果可用,或者如果在数组中未找到则首先返回)。
【讨论】:
这只会检查 IN 对吗?我需要它为不在数组中的任何国家/地区执行 创建一个包含所有国家/地区的数组并逐一检查。【参考方案2】:首先:我为默认国家代码添加了一个新变量.. ($defaultCountry = 'GB');
第二:尝试从 (get , session , cookie , geoip_country_code_by_name 或默认分配)。
最后:检查 $content array() 中是否存在国家代码,否则返回默认国家..
$defaultCountry = 'GB';
if(isset($_GET['country']) && !empty($_GET['country']))
$country =$_GET['country'];
elseif(isset($_SESSION['country']) && !empty($_SESSION['country']))
$country =$_SESSION['country'];
elseif(isset($_COOKIE['country']) && !empty($_COOKIE['country']))
$country =$_COOKIE['country'];
elseif($value = geoip_country_code_by_name(ip()))
$country = $value;
else
$country = $defaultCountry;
if(isset($content[$country]))
$country =$content[$country];
else
$country = $content[$defaultCountry];//Default ..
【讨论】:
感谢您的回答!我尝试使用这种方法,它给了我这个错误消息:“第 4 行上的非法偏移类型”...第 4 行是我有 $content = array( GB +> array(country array in here)) 你能分享一下ip()函数吗,我可以给你完整的代码吗?!【参考方案3】:你也可以通过ternary operator
查看
countryArr = array();
$countryArr = array_key_exists($code,$content) ? $content[$code] : $content['GB'];
【讨论】:
以上是关于如果国家/地区不在数组中,我如何选择第一个数组?的主要内容,如果未能解决你的问题,请参考以下文章
地区、国家、城市从 CSV 中的 Javascript 排序