我正在从一个数据库中提取信息,这些信息带有一个名为 userNAME 的字段。我在用
$query->getResultObject()
(https://codeigniter4.github.io/userguide/database/results.html#result-arrays)因此给了我一个对象数组。这些对象中的每一个都包含一个';' 分隔的字符串列表作为存储在此 userNAME 字段中的值。我正在将此值处理为一个数组(https://www.php.net/manual/en/function.explode.php)并将结果数组存储回该字段中。
因此,最后我拥有的是一组对象,每个对象都有 $Object->userNAME 作为一个数组,其中包含多个键,其中一个是“完整的”;所以要访问全名,我使用
$Object->userNAME['full'];
这在 CI3 中为我工作了多年。我正在迁移到 CI4,问题是现在在 CI4 中出现错误
未定义的属性:stdClass::$userNAME
当我发出
$Object->userNAME['full'];
我认为问题是对象,所以我将所有操作都转换为数组,因此现在访问“完整”名称变为
$Object['userNAME']['full'];
只满足报错 Undefined index: userNAME
对我来说有两个奇怪的观察
当我发出
回声 $Object['userNAME']['full'];
或者
echo $Object->userNAME['full'];
我分别收到错误Undefined index: userNAME和Undefined property: stdClass::$userNAME但仍然得到预期的输出!
使用数组,当我发出以下命令时,我得到输出 1!(https://www.php.net/manual/en/function.array-key-exists.php)
echo array_key_exists ('userNAME' , $Object ); //输出为1
暂时我只是将错误消息抑制为
@$Object['userNAME']['full'];
或者
@echo $Object->userNAME['full'];
我被卡住了,请帮忙。