2016-10-02 4 views
2

В настоящее время я с помощью функции PHP geoip_country_code_by_name, чтобы обслуживать разное содержание для различных стран из массива, который выглядит следующим образом:Могу ли я использовать 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", 
     ), 
    ); 

?> 

Но у меня есть только конкретное содержание для Бразилии и Великобритании. Я хочу, чтобы любая другая страна, обращаясь к странице, обслуживала набор контента по умолчанию, который будет отличаться от BR и GB.

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

+0

У вас может быть запись по умолчанию. Назначьте его ссылкой на то, что вы хотите по умолчанию/ – atoms

+0

@atoms. Как мне «назначить его по ссылке»? –

+0

Я действительно не уверен, думаю, у меня может возникнуть вопрос спросить себя. Я собираюсь ответить на это, как без – atoms

ответ

1
$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", 
    ) 
); 

Вы можете ссылаться на ключ, используя другой ключ «По умолчанию»;

$content['Default'] =& $content["GB"]; 
var_dump($content); 
exit; 

Alternatvly, если вы заказали значение, когда вы вернетесь из БД или там, где вы могли бы прочитать первую запись в массив, как это; $ aDefault = & $ content [array_keys ($ content) [0]];

Или вы можете определить язык по умолчанию и прочитать этот ключ массива, однако в отличие от предыдущего метода он должен находиться в массиве.

// define default 
define("DEFAULT_LANGUAGE", 'GB'); 

// would need to guarentee its there 
$aDefault =& $content[DEFAULT_LANGUAGE]; 

Последней можно Combind выше, так что если он не может найти, что язык, который вы могли бы просто использовать первые имеющийся;

// define, can be placed in an included config folder 
define("DEFAULT_LANGUAGE", 'GB'); 

$content = array(
    'GBs' => 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", 
    ) 
); 

// does the default language exist? 
if(isset($content[DEFAULT_LANGUAGE])){ 
    // yes, create a default array key and reference the required element in the array 
    $content['Default'] =& $content[DEFAULT_LANGUAGE]; 
}else{ 
    // no, create a default array key and reference the first element 
    $content['Default'] =& $content[array_keys($content)[0]]; 
} 

var_dump($content); 
exit; 
+0

Спасибо за ваш ответ атомам, это очень полезно! Я довольно новичок в php, поэтому у меня есть простой вопрос. Код на то, что вы написали: define ("DEFAULT_LANGUAGE", 'GB'); Фактический способ, которым я бы определил свой язык по умолчанию в php? –

+0

проблем нет sandman. Ключевое слово define позволяет вам установить строку, в этом случае текст 'GB' должен быть доступен во время выполнения этого скрипта/файла. См. Http://php.net/manual/en/function.define.php. Я также обновил ответ, последний блок кода должен решить вашу проблему. – atoms

+0

О, хорошо, это просто отличное решение! Существует ли конкретный файл, в котором должен быть размещен этот последний блок кода? Или он может работать откуда угодно? Мои извинения снова, если это еще один простой вопрос. –

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

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