如果国家/地区不在数组中,我如何选择第一个数组?

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 排序

如何在 iTunes Connect 地区选择孟加拉国国家?

DownPicker 选择时如何获取数组索引值

如何通过将行旋转到 csv 数据来折叠工作表

Presto Sql:如何选择数组中排名最高的值

如何使用 NSPredicate 从数组中选择确切的短语?