不能用[]进行阅读

时间:2010-09-29 09:20:03

标签: php arrays fatal-error

在我的一个脚本中,我尝试执行以下操作

$data[] = self::get($row['sr_id']); // <-- line 55

然而,PHP不允许我这样做,给我这个错误

  

致命错误:无法使用[]在第55行的/file.php中读取

self::get函数返回bool或对象。

编辑: get函数创建一个新对象,再次从mysql数据库加载数据。

7 个答案:

答案 0 :(得分:32)

我的案例中的解决方案是:

  • 坏线:

$this->$ExtraTag[] = $fullscript;

  • 好行:

$this->{$ExtraTag}[] = $fullscript;

$this->ExtraTag[] = $fullscript;

答案 1 :(得分:19)

旧的PHP版本在表达式中接受$var[],允许读出$var内容而不管语法如何。 PHP 5.1认为这是非法的。但有时错误是在意图背景之外触发的 所以我的猜测(再次:显示更多代码)是前一行包含$data[]加入的未完成表达式。

如果是对象属性,您可以将$ data var包装到{ },但这似乎不是您的问题。 (否则第54行中有一些内容,您没有显示。)右侧无法合理地触发错误。即使数组访问[]整数或对象也不会触发该致命错误。

因此,如果没有任何帮助,请使用array_push()。解决PHP。

答案 2 :(得分:0)

尝试:

$data = Array();
$data[] = self::get($row['sr_id']); // <-- line 55

答案 3 :(得分:0)

我得到的错误是:

  

致命错误:无法使用[]进行阅读       第33行的/pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php

有时问题是当你包含这样的一行时:

$page['sidebar_first'][]

如果您要复制变量名称并忘记注释掉该行,则可能会发生这种情况。

有两个问题:

1。缺少分号

2. $ variable []必须设置变量

解决了这两个问题后,我的代码为:

$page['sidebar_first'][] = $value;

不要忘记注释掉你不用来帮助调试过程的行

希望这有助于像我这样的程序员!

答案 4 :(得分:0)

我的脚本遇到了同样的问题,以下行引发了同样的错误:

$array[]=$value

我只是用

替换它
$array[count($array)-1]=$value

它完美无缺。

答案 5 :(得分:0)

另一个可能的问题可能是偶然的双==。 例如,意外执行$myArray[] == $myNewValue;会导致此错误(因为您尝试使用==读取值而不是告诉PHP分配新的数组索引。)

答案 6 :(得分:0)

我在以下方面有同样的错误:

echo implode(',', $array[]);

应该是

echo implode(',', $array);

希望这可以帮助某人