1

我正在从一个数据库中提取信息,这些信息带有一个名为 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

对我来说有两个奇怪的观察

  1. 当我发出

    回声 $Object['userNAME']['full'];

或者

echo $Object->userNAME['full'];

我分别收到错误Undefined index: userNAMEUndefined property: stdClass::$userNAME但仍然得到预期的输出!

  1. 使用数组,当我发出以下命令时,我得到输出 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'];

我被卡住了,请帮忙。

4

0 回答 0