php5.6 -> php7

classtestValidatorClass{var$err_msg=array();functioncheck(){$err_msg="aaaaaaaaaaaaaaa... class testValidatorClass {

var $err_msg = array();
function check(){
$err_msg = "aaaaaaaaaaaaaaaaaaaaa";
$this->err_msg["ab_cd"] = $err_msg;
}
}

把php5.6
更新到php7
就会报错
Warning: Illegal string offset 'ab_cd'
应该怎么解决阿 求大神!!!
$this->err_msg["ab_cd"] = $err_msg;
@$this->err_msg["ab_cd"] = $err_msg;
代码两行我试了,
会得出这样结果:
$this->err_msg = string(1) "�"
本来应该是数组的,可是就是个字符

问题解决了。
原因是我把$this->err_msg 在一个地方给重新定义了
$this->err_msg = "";
看来php7的严密性加强了
php5.6
$this->err_msg = "";
$this->err_msg['aaaa'] = "vvvvvvvvvvvvvvvvv";`是可以的
php7
$this->err_msg = "";
$this->err_msg['aaaa'] = "vvvvvvvvvvvvvvvvv";`是不可以的
一定要写成$this->err_msg = array(); or $this->err_msg = [];
展开
 我来答
lee也夏天
2017-07-21 · TA获得超过222个赞
知道小有建树答主
回答量:250
采纳率:66%
帮助的人:135万
展开全部
经我测试我本地php7环境运行你上面的代码没有报错
如果想要忽略这个报错的话可以尝试在数组键名赋值前面加个@
@$this->err_msg["ab_cd"] = $err_msg;
或者开发测试环境设置报错等级:
error_reporting(E_ERROR ); //只包错误不提示或者警告之类的
正式环境设置报错等级:
error_reporting(0); //禁止所有报错
追问
非常感谢,但是问题还是没有解决,
$this->err_msg["ab_cd"] = $err_msg;
@$this->err_msg["ab_cd"] = $err_msg;
代码两行我试了,
会得出这样结果:
$this->err_msg = string(1) "�"
本来应该是数组的,可是就是个字符串,
百度网友fce0e26
2017-07-21 · TA获得超过336个赞
知道小有建树答主
回答量:444
采纳率:63%
帮助的人:141万
展开全部
这只是个警告。没有定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式