Могу ли я использовать код страны geoip по названию для предоставления определенного контента нескольким странам?


В настоящее время я использую функцию 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",
        ),
    );

?>

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

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

Author: sandman human man, 2016-10-02

1 answers

$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;

Альтернативно, если вы заказали возвращаемое значение из базы данных или где-либо еще, вы могли бы прочитать первую запись в массив следующим образом; $По умолчанию=&$содержимое[array_keys($содержимое)[0]];

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

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

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

Наконец, вы могли бы объединить вышесказанное, чтобы, если он не может найти этот язык вы могли бы просто использовать первый доступный;

// 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;
 1
Author: atoms, 2016-10-02 09:01:50