没有不值得去解决的问题,也没有不值得去学习的技术!

在 PHP 7.4.6 中报错:Trying to access array offset on value of type bool 的修复

在 PHP 7.4.6 中报错:Trying to access array offset on value of type bool

作者:

在

, ,

1、在 PHP 7.4.6 中报错:Trying to access array offset on value of type bool,如图1

在 PHP 7.4.6 中报错:Trying to access array offset on value of type bool
图1

2、查看代码,打印 $result,其值为 bool(true)。如图2

查看代码,打印 $result,其值为 bool(true)
图2
PHP

        $result = $planService->reportUpCreate($model, $planAttendedUserRelations, $materialAssets, $identity);
        var_dump($result);
        exit;
        if ($result['status'] === false) {
            throw new ServerErrorHttpException($result['message'], $result['code']);
        }

3、尝试访问类型为 bool 的值的数组下标,因此报错。虽然之前在 PHP 7.2.14 中是正常运行的。由此分析得出,PHP 语言本身对于语法的规范性要求得更为严谨了的。参考官方文档:7.4 版本的向后不兼容更改,非数组的数组样式访问,现在,尝试将 null,bool,int,float 或 resource 类型的值用作数组 ( 例如 $null[“key”] ) 会产生一个通知。https://www.php.net/manual/en/migration74.incompatible.php 。如图3

尝试访问类型为 bool 的值的数组下标,因此报错。虽然之前在 PHP 7.2.14 中是正常运行的。由此分析得出,PHP 语言本身对于语法的规范性要求得更为严谨了的。参考官方文档:7.4 版本的向后不兼容更改,非数组的数组样式访问,现在,尝试将 null,bool,int,float 或 resource 类型的值用作数组 ( 例如 $null["key"] ) 会产生一个通知。
图3

4、编辑代码,条件判断调整为:!$result。正常运行,未再报错

PHP

        $result = $planService->reportUpCreate($model, $planAttendedUserRelations, $materialAssets, $identity);
        if (!$result) {
            throw new ServerErrorHttpException($result['message'], $result['code']);
        }

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系