在数组中使用IF ELSE

时间:2013-07-11 21:30:38

标签: php arrays if-statement constants

我需要在数组中添加IF ELSE,但是我遇到了问题以获得正确的语法。

以下是原始摘录:

function init(){
    // I18n
    load_plugin_textdomain($this->text_domain, false, dirname(plugin_basename(__FILE__)) . '/../languages/');
    $this->javascriptVariables = array(
                                'more'  => __('More Results', $this->text_domain),
                                'empty' => __('0 results', $this->text_domain),
                                'char_number' => get_option('search_in_place_minimum_char_number'),
                                'root'   => get_site_url(),
                                'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                        );

} // End init

我需要的是相对简单的:  您会看到“'more'=> __('More Results',$ this-> text_domain),”

好吧,如果页面语言是英语,我需要的是,那么值是“More Results”,如果是意大利语,则值必须是“Mostra tutto”等。

语言代码可从名为ICL_LANGUAGE_CODE的常量中获得 因此,如果ICL_LANGUAGE_CODE == en那么'more'应该值“显示更多,如果ICL_LANGUAGE_CODE =它的值是等等。

我尝试在数组内使用IF ELSE,但也没有结果。

你能帮我解决这个问题吗? 我真的很感激。

3 个答案:

答案 0 :(得分:0)

为所有语言创建所有已翻译邮件的地图,并使用查找而不是if语句:

$messages = array()
$messages['more_results'] = array('en'=>'More results', 'it' => 'Mostra tutto');

而不是'More Results',您将拥有类似$messages['more_results'][$ICL_LANGUAGE_CODE]

的内容

答案 1 :(得分:0)

最简单的解决方案是使用ternary运算符:

  $this->javascriptVariables = array(
                                'more'  => __(($ICL_LANGUAGE_CODE == "it") ? 'Mostra tutto' : 'More results',, $this->text_domain),
                                'empty' => __('0 results', $this->text_domain),
                                'char_number' => get_option('search_in_place_minimum_char_number'),
                                'root'   => get_site_url(),
                                'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                        );

替代解决方案:

您可以先检查语言,然后在阵列中使用它。

if($ICL_LANGUAGE_CODE == "Italian"){ //pseudo code
$word = "Mostra tutto";
}
else{
$word = "More Results";
}

然后,在数组中使用该变量,如下所示:

$this->javascriptVariables = array(
                            'more'  => __($word, $this->text_domain),                              
                            'empty' => __('0 results', $this->text_domain),
                            'char_number' => get_option('search_in_place_minimum_char_number'),
                            'root'   => get_site_url(),
                            'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                    );

答案 2 :(得分:-1)

我认为更好的方法是在插入数组之前执行此操作。 例如:

function init(){
    // I18n
    load_plugin_textdomain($this->text_domain, false, dirname(plugin_basename(__FILE__)) . '/../languages/');

    if(ICL_LANGUAGE_CODE='it')
        $world = 'Mostra Tutto';
    elseif(ICL_LANGUAGE_CODE='en')
        $world = 'More Results';
    // etc.
    $this->javascriptVariables = array(
                            'more'  => __($world, $this->text_domain),
                            'empty' => __('0 results', $this->text_domain),
                            'char_number' => get_option('search_in_place_minimum_char_number'),
                            'root'   => get_site_url(),
                            'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                    );

} // End init

希望我帮助你,让我知道;) (p.s.抱歉英语不好)