php
  • arrays
  • function
  • if-statement
  • include
  • 2013-02-14 3 views 0 likes 
    0

    Хорошо, глупый вопрос, я думаю ...Возвращает значение массива из включаемого файла в функции

    Я пытаюсь сделать это:

    Файл: pt.php

    <?php $langlist = array ("Car" => "Carro", "Big Car" => "Carro grande") ?> 
    

    Файл: index.php

    <?php 
    $lang = 'pt'; 
    if ($lang != 'en') include('locale/' . $lang . '.php'); 
    function __($langstring){ 
        if ($lang != 'en'){ 
         echo $langlist[$langstring]; 
        } else { 
         echo $langstring; 
        } 
    } 
    ?> 
    

    Но это не сработает (Примечание: неопределенная переменная: lang и langlist).

    Что я делаю неправильно?

    PS: Я знаю, используя echo вместо return внутри функции ins't правильно, но я не хочу делать использовать echo __(); каждый раз, когда мне нужно использовать эту функцию ...

    ответ

    2

    $lang и $langlist являются глобальными переменными, но они не могут быть видны изнутри функции. Просто добавьте следующее в первой строке функции, чтобы получить доступ к ним:

    global $lang, $langlist; 
    

    В качестве альтернативы, вы можете получить доступ к ним, как $GLOBALS['lang'] и $GLOBALS['langlist'] без использования global декларации.

    +0

    Это не полностью решает проблему. После 12-го раза я использую функцию '__()', она отображает «Уведомление: неопределенный индекс: Array Key». – oscarmarcelo

    +0

    Мой плохой! Я забыл, что дважды использовал '$ langlist'. – oscarmarcelo

    2

    Ваш синтаксис неправильно:

    <?php $langlist = array { "Car" => "Carro", "Big Car" => "Carro grande"} ?> 
    

    должен быть

    <?php $langlist = array("Car" => "Carro", "Big Car" => "Carro grande") ?> 
    
    +0

    Упс! Виноват! Эта ошибка возникает только в этом вопросе. Код уже имеет правильный синтаксис. Я думаю, это не является источником проблемы ...;) (Исправленный синтаксис в вопросе.) – oscarmarcelo

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