0

だから私はjson配列を取得するApi呼び出しを持っています:

私が次のことをするとき:

$data = $this->HasOffers->get_full_detail_report()['data']['data'];
$this->set('data',$data);

というエラーが表示されますan internal error has occoured

しかし、もしそうなら:

$data = $this->HasOffers->get_full_detail_report();
$data2 = $data['data']['data'];
$this->set('data',$data2);

すべてが正しく機能しています。

今、私の質問は、なぜこれが起こっているのですか? どうすれば修正できますか?

4

3 に答える 3

2

デバッグが 2 未満であると推測しているため、エラーの説明はあまり詳しくありません。ただし、その動作は PHP < 5.4 の問題であることがわかっています (その件に関する投稿)。

これを「修正」するには、少なくとも PHP を 5.4 にアップグレードする必要があります。または、そのような場合に中間変数を使用するだけで、それほど悪くはありません。

于 2013-08-27T15:14:03.343 に答える
2

最初の例で使用している構文は、PHP >= 5.4 でのみ使用できます。PHP マニュアルの関連セクションを参照してください: http://php.net/manual/en/language.types.array.php#example-88

http://3v4l.org/XhCKHで、さまざまなバージョンの PHP で実行されている例を確認できます。

あなたの CakePHP サイトはエラー報告がオフになっている可能性が高いため、構文エラーを表示するのではなく、内部エラーを表示しています。

于 2013-08-27T15:13:24.353 に答える
0

これは、最初の例で参照している配列が、関数get_full_detail_report()が呼び出された後にしか存在しないために発生しています。PHPはこれを好みません。PHP は、参照する前に配列が存在することを望んでいます。操作を実行する前に、ステートメント内の変数を見つけようとすることを想定しています。これは、それらの操作を実行するまで存在しない配列を検索していることを意味します。

誰かがこれについてさらに洞察を持っている場合は、彼らの改訂/コメントを歓迎します.

于 2013-08-27T15:06:55.290 に答える