除非数组被分割,否则Cakephp会抛出错误

时间:2013-08-27 15:00:23

标签: php cakephp

所以我有一个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);

一切正常。

现在我的问题是为什么会发生这种情况?我该如何解决?

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

我猜你有调试< 2,所以错误的描述不是很详细。但是,已知该行为是PHP< 5.4问题(关于该主题的post)。

要“修复”它,至少需要将PHP升级到5.4。或者,只为这些情况使用中间变量, 不好。

答案 2 :(得分:0)

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

如果有人对此有任何了解,我欢迎他们的修改/评论。