【问题标题】:Cakephp throws an error unless array is devided除非数组被分割,否则 Cakephp 会抛出错误
【发布时间】:2013-08-27 23:14:03
【问题描述】:

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

一切正常。

现在我的问题是为什么会这样?我该如何解决?

【问题讨论】:

  • 您使用的是什么版本的 PHP? IIRC,function()['key'] 语法仅在 PHP >= 5.4 中有效

标签: php cakephp


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我猜你有debug post 关于该主题)。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-08-19
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-04
        • 1970-01-01
        相关资源
        最近更新 更多