PHP从对象打印键?

时间:2011-04-27 12:13:02

标签: php arrays object echo

我有一个BIRD对象然后有[0]到[10],每个数字都有一个像“bug”或“beetle”或“gnat”这样的子标题,以及每个数字的值。

我想打印

BIRD 
    [0]
       bug = > value 

我无法在任何地方找到如何做到这一点 - 有关于PUBLIC和PRIVATE和CLASS的讨论,这就是我失踪的地方

5 个答案:

答案 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");
}