44

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

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

但是,PHP 不允许我这样做,给了我这个错误

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

self::get函数返回一个布尔值或一个对象。

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

4

7 回答 7

34

我的解决方案是这样的:

  • 坏线:

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

  • 好线:

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

或者

$this->ExtraTag[] = $fullscript;

于 2011-11-19T12:25:46.027 回答
23

表达式中接受的旧 PHP 版本$var[]允许读取$var内容而不管语法如何。PHP 5.1 将其设为非法。但有时错误是在预期上下文之外触发的。
所以我的猜测(再次:显示更多代码)是前面的行包含一个未完成的表达式,$data[]连接到该表达式。

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

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

于 2010-09-29T12:36:22.190 回答
2

我得到的错误是:

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

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

$page['sidebar_first'][]

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

有两个问题:

1.缺少分号

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

解决这两个问题后,我的代码如下:

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

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

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

于 2014-02-03T16:41:40.700 回答
0

尝试:

$data = Array();
$data[] = self::get($row['sr_id']); // <-- line 55
于 2010-09-29T09:46:22.267 回答
0

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

$array[]=$value

我只是将其替换为

$array[count($array)-1]=$value

它工作得很好。

于 2017-06-22T18:05:20.300 回答
0

另一个可能的问题可能是意外的 double ==。例如不小心这样做$myArray[] == $myNewValue;会导致这个错误(因为你试图用 读取一个值,==而不是告诉 PHP 分配一个新的数组索引)。

于 2017-07-21T13:02:32.183 回答
0

我有以下相同的错误:

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

应该是

echo implode(',', $array);

希望这可以帮助某人

于 2019-03-10T07:08:31.513 回答