Доступ к массиву объектов без цикла

У меня есть SQL-запрос, который возвращает массив объектов с именем $results . SQL-запрос имеет «LIMIT 1», поэтому в массиве никогда не бывает нескольких экземпляров объекта (нет необходимости в цикле). Массив находится ниже:

array (1) {[0] => object (stdClass) # 5875 (1) {["meta_value"] => строка (3) "yes"}}

Объект meta_value может быть «да» или «нет». Я хотел бы получить доступ к 'meta_value' напрямую, поэтому я могу использовать его вывод в состоянии, я изо всех сил пытаюсь найти способ сделать это. Мой код ниже, это неверно, однако PHP

 if ($results->meta_value == 'yes') { //do something nice } 

Причина $resultsмассив объектов, которые вы должны выбрать первый элемент с индексом 0 а затем взять определенное свойство:

 if ($results[0]->meta_value == 'yes') {} 

Вы также можете использовать array_shift :

 /* @var stdClass $result */ $result = array_shift($results); if ($result->meta_value == 'yes') { //do something nice } 

Для справки см. http://php.net/manual/en/function.array-shift.php .

imo, самый простой, самый надежный и безопасный способ получения значения первой строки PHP array – использовать текущий – вернуть текущий элемент в функцию массива .

 if (current($results)->meta_value === 'yes') { //do something nice } 

Зачем?

Проблема в том, что массив PHP не является «нулевым линейным списком ячеек в памяти». Это действительно упорядоченная хэш-карта на других языках.

Он может использовать any string в качестве key или index . Если вы не используете ключ при добавлении записи в массив, он использует числовой индекс, начинающийся с нуля.

Важным моментом является то, что ключи не обязательно должны быть последовательными целыми числами. Они могут быть словами (строка). т.е. в массиве не может быть нулевого индекса

Итак, как получить доступ к первому элементу PHP array если мы не знаем индексов, которые являются keys ?

Итераторы массива PHP

Каждый array имеет iterator который связан с ним. Итератор points на элемент, если массив имеет элементы или не определен для пустых массивов.

Когда массив создается, итератор всегда настроен на первую запись

Общие функции для доступа к Array Iterator :

  • current – возвращает элемент, на который указывает internal pointer в массиве

  • key – выбор текущего ключа из массива

  • next – продвигать внутренний указатель массива массива
  • reset – установить внутренний указатель массива на его первый элемент

    Заметки:

  • current вернет false если не указывает на действительный элемент, иначе он вернет значение.

Резюме

Используя current функцию для доступа к массиву, вы обязательно получите значение записи независимо от index или key .