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

PHP 8.1升级后strpos()空值传入报错的解决方案咨询

解决PHP 8.1中strpos()传null的弃用警告

PHP 8.1严格了参数类型检查,strpos()的第一个参数($haystack)要求必须是字符串,传null会触发弃用警告。针对你代码里的问题,有几种可行的修改方式:

  • 先判断变量非null再执行strpos
    这种方式明确区分$orderStatus为null和有效字符串的场景,只有当变量不为null时才检查下划线:

    if ($orderStatus !== null && strpos($orderStatus, '_') !== false) {
        // do stuff...
    }
    
  • 强制转换为字符串
    把$orderStatus强制转为字符串,null会被转为空字符串,此时strpos('', '_')会返回false,逻辑和原代码在PHP7.4下的表现一致:

    if (strpos((string)$orderStatus, '_') !== false) {
        // do stuff...
    }
    
  • 使用null合并运算符设置默认值
    当$orderStatus为null时,用空字符串替代,效果和强制转换类似,写法更简洁:

    if (strpos($orderStatus ?? '', '_') !== false) {
        // do stuff...
    }
    

如果你的业务逻辑中,$orderStatus为null时不需要执行后续代码,三种方法都可以;如果需要单独处理null的情况,优先选第一种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:05:25