我有一个BIRD对象然后有[0]到[10],每个数字都有一个像“bug”或“beetle”或“gnat”这样的子标题,以及每个数字的值。
我想打印
BIRD
[0]
bug = > value
我无法在任何地方找到如何做到这一点 - 有关于PUBLIC和PRIVATE和CLASS的讨论,这就是我失踪的地方
答案 0 :(得分:56)
您可以通过输入对象来轻松完成此操作:
$keys = array_keys((array)$BIRD);
答案 1 :(得分:25)
与brenjt的回复类似,它使用PHP的get_object_vars
而非类型转换对象。
$array = get_object_vars($object);
$properties = array_keys($array);
答案 2 :(得分:1)
我可能错了,但尝试使用对象作为参数array_keys
。我相信这是可能的PHP。
http://php.net/manual/en/function.array-keys.php
无论如何,请阅读有关反思的内容。
答案 3 :(得分:0)
如果“对象”实际上是一个关联数组而不是一个真实的对象,那么array_keys()
将为您提供所需的内容,而不会发出警告或错误。
另一方面,如果您的对象是真实对象,那么如果尝试直接使用array_keys()
,则会收到警告。
您可以使用get_object_vars()
从对象中提取键-值对作为关联数组,然后可以使用array_keys()
从对象中获取键:
$keysFromObject = array_keys(get_object_vars($anObject));
答案 4 :(得分:0)
类似array_keys的对象可能已经停止工作,但是,令人惊讶的是,foreach构造至少在php stdClass对象上有效。
$object = new stdClass();
$object->a = 20;
$object->b = "hello";
$keys = array_keys($object);
// array_keys returns null. PHP Version 7.3.3 windows
foreach($object as $key=>$value)
{
// but this works
echo("key:" . $key . " value:" . $value . "\n");
}