Доступ к элементу из массива не работает на реальном сервере, работает на локальном хосте

Эта проблема сводит меня с ума, может кто-нибудь сказать, что с этим не так!? (ПРИМЕЧАНИЕ. Скорее всего, это что-то действительно глупое, но я не могу понять.)

В среде CodeIgniter у меня есть языковой ключ, подобный этому:

$lang['android'] = array
(
    'title' => 'Android apps',
    'image_id' => 5,
    'description' => 'Learn how to create your own Android app',
    'level' => 'Beginner'
);

Затем в файле просмотра я загружаю этот ключ следующим образом:

<?php
    echo lang($course)['title'];
?>

Это отлично работает на локальном хосте, и если $course равен «android», он напечатает «приложения для Android». Однако этот самый код не работает на реальном сервере! Он просто терпит неудачу и показывает мне ошибку «Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная '[', ожидание ',' или ';' в [имя файла]"

Почему это происходит? Вероятно, это более низкая версия PHP? Если да, то как я могу получить доступ к этому ключу массива??

Дополнительная информация: выполнение

var_dump('android');

Броски:

array(4) { ["title"]=> string(12) "Android apps" ["image_id"]=> int(5) ["description"]=> string(40) "Learn how to create your own Android app" ["level"]=> string(8) "Beginner" }

Каково ожидаемое значение... Так почему же это происходит?


person adelriosantiago    schedule 08.01.2014    source источник
comment
В какой строке вы получили ошибку? Это один из тех, что вы показали?   -  person Goikiu    schedule 08.01.2014
comment
$course, вероятно, не имеет той ценности, которую вы думаете. Попробуйте var_dump ($course); При таких проблемах журналирование и создание дампа обычно являются наиболее эффективными инструментами отладки. Если сомневаетесь, выбросьте его.   -  person GordonM    schedule 08.01.2014
comment
Ваш рабочий сервер, вероятно, имеет версию PHP ниже 5.4 (как сообщает вам ссылка, предоставленная @AmalMurali).   -  person putvande    schedule 08.01.2014
comment
Спасибо всем за помощь! Это помогло мне стать на правильный путь, я уже решил это и создал и поделился функцией, которую можно вставить на CodeIgniter для доступа к ключам из массивов.   -  person adelriosantiago    schedule 08.01.2014


Ответы (2)


Невероятно, да, у меня PHP-сервер ниже 5.4... Так что разыменование не работает.

Я уже решил это, вы можете вставить следующую функцию в свой CodeIgniter:

function lang_arr($line, $key = '')
    {
        $CI =& get_instance();
        $line = $CI->lang->line($line);
        if ($key != '')
        {
            $line = $line[$key];
        }

        return $line;       
    }

Вставьте его в файл «system/helpers/language_helpers» рядом с функцией «lang», которая не поддерживает массивы.

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

$lang['word'] = array
(
    'key1' => 'value1',
    'key2' => 'value2'
);

В коде просто позвоните:

echo lang_arr($word, 'key');

Например

echo lang_arr('word', 'key1'); //Will echo 'value1'

Спасибо всем комментаторам, это помогло мне встать на правильный путь.

person adelriosantiago    schedule 08.01.2014

person    schedule
comment
Это вызывает ошибку: Серьезность: Уведомление, Сообщение: Неопределенная переменная: lang. В любом случае кажется, что нужно быть очень близким к ответу, поскольку это делает логику. Переменная $lang по какой-то причине не видна, так как она определена в другом файле. Я бы искал ответ, который сохраняет отдельную структуру. - person adelriosantiago; 08.01.2014