0

所以我有一个 Api 调用,我得到一个 json 数组:

当我执行以下操作时:

$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

您在第一个示例中使用的语法仅在 PHP >= 5.4 中可用。请参阅 PHP 手册的相关部分:http: //php.net/manual/en/language.types.array.php#example-88

您可以在以下位置查看在不同版本的 PHP 中运行的示例:http: //3v4l.org/XhCKH

您的 CakePHP 站点可能关闭了错误报告,因此它不是显示语法错误,而是显示一个内部错误。

于 2013-08-27T15:13:24.353 回答
2

我猜你有 debug < 2,所以错误的描述不是很详细。但是,这种行为被认为是 PHP < 5.4 的问题(关于该主题的帖子)。

要“修复”它,您至少需要将 PHP 升级到 5.4。或者,只是在这些情况下使用中间变量,这还不错

于 2013-08-27T15:14:03.343 回答
0

发生这种情况是因为您在第一个示例中引用的数组仅在调用函数后才存在get_full_detail_report()。PHP 不喜欢这样。PHP 希望您的数组在您引用它之前就已经存在。我假设它会在执行任何操作之前尝试在您的语句中定位任何变量,这意味着它正在搜索一个在执行这些操作之前不存在的数组。

如果有人对此有更深入的了解,我会欢迎他们的修改/评论。

于 2013-08-27T15:06:55.290 回答