Неопределенное свойство / индекс, который доступен - PullRequest
1 голос
/ 01 апреля 2020

Я извлекаю информацию из базы данных, которая поступает с одним полем с именем 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'];

только для устранения ошибки Неопределенный индекс: userNAME

Несколько двух странных наблюдений для меня

  1. Когда я выдаю

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

или

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

Я получаю сообщение об ошибке Неопределенный индекс: userNAME и Неопределенное свойство: 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'];

Я застрял, пожалуйста, помогите.

...