You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1中调用array_shift()传入Null报错,如何解决?

问题解决方法

原因分析

PHP 8.0及以上版本对内置函数的参数类型检查进行了严格升级,array_shift() 不再接受 null 作为参数,而PHP 7.2中允许传入null并返回null。当代码中$newvar未定义时,$end被赋值为null,进入while循环调用array_shift($end)就会触发TypeError致命错误。

修复方案

有两种简洁的修复方式,推荐第一种:

  • 方案一:将null替换为空数组
    把初始化$end的代码改成:

    $end = isset($newvar) ? array($newvar) : [];
    

    当$newvar不存在时,$end是空数组,array_shift([])会返回null,循环条件不成立,不会进入循环,和原代码逻辑完全一致,同时符合PHP 8.1的类型要求。

  • 方案二:在循环中增加类型判断
    修改while循环的条件,先检查$end是否为数组:

    while (is_array($end) && ($ends = array_shift($end))) {
        // 原循环逻辑
    }
    

    这种方式会先确保array_shift()的参数是数组类型,避免报错。

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:32:04