Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP7与5.6数组声明_Php_Arrays - Fatal编程技术网

PHP7与5.6数组声明

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

我最近从PHP5.6迁移到PHP7.1.4,当我试图在中声明数组中的数组时,我的应用程序显示错误:

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中的错误。我怀疑这与“严格类型”特性有关,我来看看。无论如何,谢谢你的回答!