在我的一个脚本中,我尝试执行以下操作
$data[] = self::get($row['sr_id']); // <-- line 55
但是,PHP不允许我这样做,给我这个错误
致命错误:不能使用[]在第55行的/file.php中读取
self::get
函数返回bool或对象。
编辑:get函数创建一个新对象,再次从mysql数据库加载数据。
旧的PHP版本在表达式中接受了$var[]
,允许读出$var
内容,无论语法如何。 PHP 5.1认为这是非法的。但有时错误是在意图上下文之外触发的。
所以我的猜测(再次:显示更多代码)是前一行包含一个未完成的表达式,$data[]
加入到该表达式中。
如果是对象属性,您可以将$ data var包装到{ }
中,但在您的情况下,这似乎不是问题。 (否则第54行中有一些内容,您没有显示。)右侧无法合理地触发错误。即使访问[]
整数或对象的数组也不会触发该致命错误。
所以,如果没有任何帮助,只需使用array_push()
。解决PHP问题。
在我的案例中的解决方案是这样的:
$this->$ExtraTag[] = $fullscript;
$this->{$ExtraTag}[] = $fullscript;
要么
$this->ExtraTag[] = $fullscript;
尝试:
$data = Array();
$data[] = self::get($row['sr_id']); // <-- line 55
我得到的错误是:
致命错误:无法使用[]在第33行的/pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.php中阅读
有时问题是当你包含这样一行时:
$page['sidebar_first'][]
如果您要复制变量名称并忘记注释掉该行,则可能会发生这种情况。
有两个问题:
1.缺少分号
2. $ variable []必须设置一个变量
解决了这两个问题后,我的代码为:
$page['sidebar_first'][] = $value;
不要忘记注释掉你不用来帮助调试过程的行
希望这有助于像我这样的程序员!
我的脚本遇到了同样的问题,以下行引发了同样的错误:
$array[]=$value
我只是替换它
$array[count($array)-1]=$value
它工作得很好。
另一个可能的问题可能是偶然的双==
。例如,意外地执行$myArray[] == $myNewValue;
会导致此错误(因为您尝试使用==
读取值而不是告诉PHP分配新的数组索引)。
我有以下相同的错误:
echo implode(',', $array[]);
应该是的
echo implode(',', $array);
希望这可以帮助别人