У меня есть 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 – выбор текущего ключа из массива
reset – установить внутренний указатель массива на его первый элемент
Заметки:
current
вернет false
если не указывает на действительный элемент, иначе он вернет значение.
Резюме
Используя current
функцию для доступа к массиву, вы обязательно получите значение записи независимо от index
или key
.