提问人:Ken Emerson 提问时间:11/14/2023 最后编辑:mickmackusaKen Emerson 更新时间:11/14/2023 访问量:35
PHP 警告:“从中的空值创建默认对象。
PHP warning: "Creating default object from empty value in . . ."
问:
我已经尝试了此处建议的解决方案,但警告仍然存在。这是产生问题的代码:
$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 数组的引用,它保存了数据库读取的结果:
$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 select 命令的多个查询。
出现的警告并不妨碍代码正常工作,但我对如何摆脱警告感到茫然。(我不喜欢松散的结局:-))
我最初没有数组分配,这导致了警告的第一次观察。
然后,我尝试将数组定义为“stdClass”,其结果为:
PHP 致命错误:未捕获错误:无法将 stdClass 类型的对象用作数组
这是我在谷歌搜索此警告时能够找到的两个选项。
答:
0赞
almaruf
11/14/2023
#1
您的问题是:
$qryResults = array();
$qryResults[$sqlidx]->numrows = 0;
您正在尝试:
- 将变量初始化为空数组
- 然后尝试查找不存在的项并设置该不存在项的属性。
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;
评论
$qryResults = array();
numrows
$qryResults[$sqlidx]
$qryResults[$sqlidx] = (object) [];
0