PHP警告:“正在从空值创建默认对象”

ivqmmu1c  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(132)

我已经尝试了这里建议的解决方案,但警告仍然存在。这是产生问题的代码:

$qryResults = array();
$qryResults[$sqlidx]->numrows = 0;  [This is the line pointed to by the warning message]
$qryResults[$sqlidx]->numcols = odbc_num_fields($resultSets[$sqlidx]);

字符串
还有另一个对$qryResults数组的引用,它保存了DB读取的结果:

$qryResults[$sqlidx]->fields[$qryResults[$sqlidx]->numrows][$j] = date('m/d/Y H:i:s',odbc_result($resultSets[$sqlidx], $j +      1));


第一次使用数组时出现警告(numrows=0)PHP版本为7.4.3,运行于Ubuntu 20.04
$qryResults保存来自MSSQL选择命令的多个查询。
出现的警告并不妨碍代码正常工作,但我不知道如何摆脱警告。(我不喜欢松散的结尾:-))
我最初没有数组赋值,这导致了第一次观察到警告。
然后我尝试将数组定义为“stdClass”,结果是:
PHP Fatal error:Uncaught Error:Cannot use object of type stdClass as array
这是我在谷歌上搜索这个警告时找到的两个选项。

fwzugrvs

fwzugrvs1#

你的问题是:

$qryResults = array();
$qryResults[$sqlidx]->numrows = 0;

字符串
您正在尝试:
1.将变量初始化为空数组
1.然后试图找到一个不存在的项目,并设置属性,如numrows的不存在的项目。
这不是生产就绪代码,而是为了澄清什么是有效的:

$qryResults = array();
$anItem = (object)array(
   'numrows' => 0,
   'numcols' => 'something_else',
);
$qryResults[$sqlidx] = $anItem;


$anItem = new stdClass();
$anItem->numrows = 0;
$anItem->numcols = 'something_else';

$sqlIdx = 0;
$qryResults = array();
$qryResults[$sqlidx] = $anItem;

相关问题