web-dev-qa-db-ja.com

[]を読み取りに使用できません

私のスクリプトの1つで、次のことを試みます

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

ただし、PHPはこれを行うことを許可せず、これを与えますerror

致命的なエラー:55行目の/file.phpの読み取りに[]を使用できません

self::get関数は、ブールまたはオブジェクトを返します。

編集: get関数は、mysqlデータベースからデータを再度ロードする新しいオブジェクトを作成します。

35
eriktm

古いPHPバージョンは式で_$var[]_を受け入れ、構文に関係なく_$var_のコンテンツを読み取ることができました。 PHP 5.1はそれを違法にしました。ただし、意図したコンテキストの外部でエラーが発生する場合があります。
だから私の推測(再び:もっとコードを表示)は、前の行に未完成の式が含まれており、それに_$data[]_が結合しているということです。

オブジェクト属性の場合、$ data varを_{ }_にラップできますが、それは問題ではないようです。 (それ以外の場合、54行目に表示されていないものがあります。)右側ではエラーを合理的にトリガーできません。 _[]_整数またはオブジェクトにアクセスする配列でさえ、その致命的なエラーを引き起こしません。

何も役に立たない場合は、array_Push()を使用してください。 PHPを回避します。

20
mario

私の場合の解決策はこれでした:

  • 悪い行:

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

  • 良いライン:

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

または

$this->ExtraTag[] = $fullscript;

32
SZL

私が得たエラーは:

致命的なエラー:33行目の/pathtosite/drupal/sites/all/themes/zenui/templates/page.tpl.phpの読み取りに[]を使用できません

次のような行を含めると問題が発生する場合があります。

$page['sidebar_first'][]

これは、変数名をコピーしていて、行をコメントアウトするのを忘れた場合に発生する可能性があります。

2つの問題がありました。

1。セミコロンがありません

2。 $ variable []は変数を設定する必要があります

これらの2つの問題を修正した後、私のコードは次のようになりました。

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

デバッグプロセスを支援するために、使用していない行をコメントアウトすることを忘れないでください

これが私のような仲間のプログラマに役立つことを願っています!

0
leooutlooks

試してください:

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

別の考えられる問題は、偶発的な二重==である可能性があります。たとえば、誤って$myArray[] == $myNewValue;を実行すると、このエラーが発生します(PHPに新しい配列インデックスを割り当てるのではなく、==で値を読み取ろうとしているため)。

0
Byson

スクリプトで同じ問題が発生しましたが、次の行で同じエラーがスローされました。

$array[]=$value

私は単にそれを

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

完璧に機能しました。

0
Nino Filiu

次と同じエラーが発生しました:

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

あるべきだった

echo implode(',', $array);

これが誰かを助けることを願っています

0