PHP7与5.6数组声明
我最近从PHP5.6迁移到PHP7.1.4,当我试图在中声明数组中的数组时,我的应用程序显示错误:PHP7与5.6数组声明,php,arrays,Php,Arrays,我最近从PHP5.6迁移到PHP7.1.4,当我试图在中声明数组中的数组时,我的应用程序显示错误: 447 $rblq['response']['result'] = $numbers; 448 $rblq['response']['document'] = $link; 遇到PHP错误严重性:警告 消息:非法字符串偏移量“结果”文件名: Materiales.php行号:447 遇到PHP错误严重性:警告消息:无法将空字符串分配给字符串偏移量 文件名:Materiales.php行号:448
447 $rblq['response']['result'] = $numbers;
448 $rblq['response']['document'] = $link;
遇到PHP错误严重性:警告
消息:非法字符串偏移量“结果”文件名:
Materiales.php行号:447
遇到PHP错误严重性:警告消息:无法将空字符串分配给字符串偏移量
文件名:Materiales.php行号:448
以下是每个变量的var\u dump
结果:
var_dump($numbers) array(3) {
["cristales"]=>
int(0)
["porcentaje"]=>
float(0)
["monedas"]=>
int(0)
}
var_dump($link) string(0) ""
我怀疑这与$numbers
和$link
无关,但与我声明在执行时还不存在的新数组的方式有关:
$rblq['response']['result']
$rblq['response']['document']
它在PHP5.6上运行,但在PHP5.1.4上似乎不起作用。
任何洞察都将不胜感激。
$rblq['response']
是一个字符串,var\u dump($rblq)代码>以查看。在PHP5.6下,最有可能的情况是错误报告和/或显示错误关闭,现在打开
查找将$rblq['response']
设置为字符串的位置,然后将其删除或取消设置
或将其重新初始化为数组:
unset($rblq['response']);
//or
$rblq['response'] = array();
似乎$rblq['response']
是一个字符串而不是数组…显示创建$rblq['response']]
嗨,我尝试将$rblq['response']转换为数组$rblq['response']=[];它的工作方式与PHP5.6相同,我的问题是:为什么在PHP5.6中它被强制放入数组,为什么在PHP7中它不能像那样工作。我从PHP.net中阅读了“从PHP5.6.x迁移到PHP7.0.x”,找不到这个具体的变化。结果是{[“成功”=>bool(true)[“mesagge”]=>string(0)”“[“响应”]=>string(0)”}我可以看出响应是一个字符串,我用code
$rblq['response']=[];而且对于所需的功能来说,它工作得很好。然而,我想知道为什么它不是PHP5.6中的错误。我怀疑这与“严格类型”特性有关,我来看看。无论如何,谢谢你的回答!