2014-01-08 22 views
0

这个问题让我疯狂,有人能告诉我这是怎么回事! (注:有机会,这是一些真正愚蠢的,但我似乎无法弄清楚。)从一个阵列访问一个元素在真实服务器上失败,在本地主机上工作

在一个笨框架我有一个语言的关键是这样的:

$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']; 
?> 

这完全适用于本地主机,如果$当然是“机器人”,它会打印出“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" } 

这是预期值......那么,为什么出现这种情况?

+0

哪条线你有错误?这是你展示的那个吗? – Goikiu

+0

$当然可能不会保持你认为它的价值。尝试var_dump($ course);像这样的问题,日志和转储通常是最有效的调试工具。如有疑问,请将其倒出。 – GordonM

+1

您的实时服务器可能具有低于5.4的PHP版本(因为@AmalMurali提供的链接告诉您)。 – putvande

回答

3

难以置信,是的,我正在运行一个低于5.4的PHP服务器......所以解引用不起作用。

我已经解决了它,你可以粘贴到您的CodeIgniter以下功能:

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

     return $line;  
    } 

上不支持的文件“系统/助理/ language_helpers”就在旁边功能“郎”贴吧阵列。

现在你应该能够访问这样的语言数组键:

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

在代码只需拨打:

echo lang_arr($word, 'key'); 

例如

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

感谢所有这些评论者帮助我走上了正确的道路。

0
<?php 
$lang['android'] = array 
(
    'title' => 'Android apps', 
    'image_id' => 5, 
    'description' => 'Learn how to create your own Android app', 
    'level' => 'Beginner' 
); 
$course ='android'; //here you have to assign 
echo($lang[$course]['title']); 
?> 
+0

这会引发错误:“严重性:通知,消息:未定义的变量:lang”。 无论如何,它似乎需要非常接近答案,因为它使逻辑。变量$ lang是由于某种原因不可见的,因为它是在另一个文件中定义的。我会寻找一个保持独立结构的anwser。 – adelriosantiago

相关问题