You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CI3.1.7升级PHP至7.1+出现Illegal string offset警告求解决方案

解决PHP7.1+/7.2下CodeIgniter 3的"Illegal string offset"警告

问题根源

你遇到的警告完全是因为控制器中$data的初始化类型错误

public $data=""; // 这里把$data定义成了字符串类型

在PHP7.0中,这种试图给字符串使用数组偏移量的操作会被静默忽略(仅产生低级通知),但PHP7.1及以上版本对类型严格性做了提升,直接抛出Illegal string offset警告。

你的模型get_web_data方法返回的是正常字符串(+91.**********),这部分没有问题——问题出在你试图把这个字符串赋值给一个字符串变量的数组键,这在PHP7.1+里是不允许的。

解决步骤

只需要把控制器中$data的初始化从字符串改成空数组即可:

class Site extends CI_Controller {
    // 把""改成[],初始化空数组
    public $data=[]; 

    function __construct(){
        parent::__construct();
        $this->data["C_mobile_number"]=$this->site_model->get_web_data(1);
    }
}

为什么这样能解决?

$data是数组类型时,$this->data["C_mobile_number"]就是标准的数组键赋值操作,符合PHP的类型规则,在所有PHP版本(包括7.0/7.1/7.2)中都能正常运行。

额外验证

你可以在构造函数里加一行var_dump($this->data);,修改后会看到$data是一个包含C_mobile_number键的数组,而不是之前的字符串。

内容的提问来源于stack exchange,提问作者Rk dev tech

火山引擎 最新活动