我有一个SQL查询,它返回一个名为$results
的对象数组。 SQL查询有一个' LIMIT 1',因此数组中永远不会有多个对象实例(无需循环)。该数组如下:
array(1){[0] => object(stdClass)#5875(1){[" meta_value"] => string(3)" yes" }}
meta_value对象可以是“是”或“不是”。我想访问meta_value'直接所以我可以在一个条件下使用它的输出,我努力找到一种方法来做到这一点。我的代码如下,但这不是有效的PHP
if ($results->meta_value == 'yes') {
//do something nice
}
答案 0 :(得分:3)
因为$results
是对象数组,您应该选择索引为0
的第一个元素,然后选择某个属性:
if ($results[0]->meta_value == 'yes') {}
答案 1 :(得分:0)
您也可以使用array_shift
:
/* @var stdClass $result */
$result = array_shift($results);
if ($result->meta_value == 'yes') {
//do something nice
}
答案 2 :(得分:0)
imo,获取PHP array
第一行值的最简单,最可靠和最安全的方法是使用current — Return the current element in an array函数。
if (current($results)->meta_value === 'yes') {
//do something nice
}
为什么?
问题是PHP array不是内存中基于零的线性单元格列表。这真是一个有序的hash map 用其他语言。
可以将 any string
用作 key
或index
。如果在向数组添加条目时不使用密钥,则它使用从零开始的数字索引。
重点是键不必是连续的整数。它们可以是单词(字符串)。 ie 数组中可能没有零索引
那么,如果我们不知道PHP array
的索引,如何访问keys
的第一个元素?
PHP数组迭代器
每个array
都有一个iterator
与之关联。如果数组有元素,则元素的迭代器points
或未定义的空数组。
创建数组时,迭代器始终设置为指向第一个条目
访问Array Iterator
的常用函数:
current - 返回数组中internal pointer
指向的元素
key - 从数组中获取当前密钥
reset - 将数组的内部指针设置为第一个元素
注意:
current
将返回false
,否则会返回该值。
摘要的
通过使用current
函数访问数组,您肯定会获得index
或key
实际上的条目值。