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

在 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


        $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。正常运行,未再报错


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


 

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理