2016-10-03 6 views
1

Я использую функцию 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())))); 
+0

Может быть, вы должны рассмотреть [in_array()] (http://php.net/ manual/en/function.in-array.php) – Alex

+0

Ну, это зависит от того, как вы проверяете, нет ли страны в массиве, одним из способов было бы использовать тернарный оператор. – Epodax

+0

Я не уверен, как проверить, нет ли страны в массиве –

ответ

0

Во-первых: я Добавлено новую переменную для кода страны по умолчанию .. ($ defaultCountry = 'GB');

Во-вторых: попытайтесь получить код страны от (get, session, cookie,
geoip_country_code_by_name или по умолчанию в соответствии с назначением).

Наконец: проверить, если код страны существует в массиве $ контента() в противном случае вернуть страну по умолчанию ..

$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 .. 
} 
+0

Спасибо за ваш ответ! Я попытался использовать этот метод и дал мне это сообщение об ошибке: «незаконный тип смещения в строке 4» ... строка 4 - это то, где у меня есть массив $ content = array (GB +> array (массив стран здесь)) –

+0

вы можете поделиться ip(), так что я могу дать вам полный код ?! –

+0

сделал это работа ..?! –

1

Сначала проверьте, если код страны находится в $content массив в качестве ключа или нет, если не служить первый массив как по умолчанию. Чтобы проверить, существует ли ключ в массиве или нет, используйте array_key_exists().

Подобно этому,

$countrycode="IN"; 
if(!array_key_exists($countrycode,$content)) { 
    $countryarray=$content[0]; 
} else { 
    $countryarray=$content[$countrycode]; 
} 

Приведенный выше код будет возвращать содержимое страны, если имеется или первый, если не найден в массиве.

+0

Это будет просто проверять право на право? Мне нужно, чтобы он выполнялся для любой страны, которая не находится в массиве. –

+0

Создайте массив из всех стран и проверьте каждый по одному. –

0

Вы можете проверить это с ternary operator также

countryArr = array(); 
$countryArr = array_key_exists($code,$content) ? $content[$code] : $content['GB']; 

 Смежные вопросы

  • Нет связанных вопросов^_^