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

PHP5迁移PHP7遇substr()参数类型错误,求解决方案

PHP5迁移至PHP7:substr()参数类型错误解决方案

问题原因

PHP7对函数参数的类型检查比PHP5更严格,原代码中$len是通过substr()获取的字符串类型值,但substr()的第三个参数要求必须是整数。PHP5会自动隐式转换字符串数字为整数,PHP7不再允许这种隐式转换,因此抛出substr() expects parameter 3 to be integer, string given错误。

解决方案

将$len强制转换为整数类型,同时修正$offset计算时的类型问题(避免字符串参与数学运算导致意外结果):

修改后的代码:

public function decode( &$raw, &$offset )
{
    $end = strpos( $raw, ":", $offset );
    // 将截取到的长度字符串转为整数
    $len = (int) substr( $raw, $offset, $end - $offset );
    // 确保$len是整数后再参与运算
    $offset += $len + ( $end - $offset );
    ++$end;
    // 第三个参数传入整数类型的$len
    $this->value = substr($raw, $end, $len);
}

关键修改点

  • 对substr()获取的$len使用(int)强制类型转换,确保它是整数
  • 由于$offset的计算依赖$len,转换后能避免字符串与整数相加的潜在问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:07:02