Как написать это, если заявление (я) более коротким способом [дубликата]

0

Можно ли написать это короче? Я не могу вносить изменения в метод accept_lang и всегда возвращает логическое значение.

if ($ci->agent->accept_lang('en-US') OR $ci->agent->accept_lang('en-GB') OR $ci->agent->accept_lang('en-au'))
  • 0
    нет, вы не можете, без изменения метода
  • 0
    Вы пытаетесь избежать вызова метода 3 раза, или вы просто хотите меньше символов в этой строке?
Показать ещё 4 комментария
Теги:
coding-style

3 ответа

0
Лучший ответ

Может быть, не короче, но простой цикл может помочь. Сначала добавьте наиболее распространенные области, чтобы уменьшить количество проверок и перерыв, чтобы остановить проверку, если вы найдете его.

<?php
foreach(array('en-US','en-GB','en-au') as $lang) {if($ci->agent->accept_lang($lang)){stuff();break;}}
?>

или разразился:

<?php
foreach(array('en-US','en-GB','en-au') as $lang) {
  if($ci->agent->accept_lang($lang)){
    stuff(); // or whatever else you need, or set a $flag = true
    break;
  }
}
?>
  • 0
    Приветствия, возможно, не самый эффективный способ, но это то, о чем я думал, но не мог думать о себе.
0

В основном ваши ищут истинный в массиве результатов, используя in_array Icw array_map можно построить следующий Однострочник;

if (in_array(true, array_map(array($ci, "accept_lang"), array("en-US", "en-GB", "en-au"))))

Сломался немного, чтобы более четко показать, что происходит;

$langAccept = array_map(array($ci, "accept_lang"), array("en-US", "en-GB", "en-au"));
if (in_array(true, $langAccept)) {
    // ...
}
0

Как насчет использования? Он копирует из

Определение языка браузера в PHP

почему бы вам не сделать это простым и чистым

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "fr":
        //echo "PAGE FR";
        include("index_fr.php");//include check session FR
        break;
    case "it":
        //echo "PAGE IT";
        include("index_it.php");
        break;
    case "en":
        //echo "PAGE EN";
        include("index_en.php");
        break;        
    default:
        //echo "PAGE EN - Setting Default";
        include("index_en.php");//include EN in all other cases of different lang detection
        break;
}
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню