所以我有一个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);
一切正常。
现在我的问题是为什么会发生这种情况?我该如何解决?
答案 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希望您的数组在引用之前存在。我假设它在执行任何操作之前尝试在语句中找到任何变量,这意味着它会在执行这些操作之前搜索不存在的数组。
如果有人对此有任何了解,我欢迎他们的修改/评论。