PHP从对象打印键?

use*_*220 18 php arrays object echo

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

我想要打印

BIRD 
    [0]
       bug = > value 
Run Code Online (Sandbox Code Playgroud)

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

bre*_*njt 63

你可以通过类型转换对象轻松地完成它:

$keys = array_keys((array)$BIRD);


nic*_*ick 29

与brenjt的响应类似,它使用PHP get_object_vars而不是类型转换对象.

$array = get_object_vars($object);
$properties = array_keys($array);
Run Code Online (Sandbox Code Playgroud)

  • 哪种方法更有效? (5认同)
  • 阅读后 /sf/ask/175854871/ get_object_vars 使用起来更安全。 (2认同)

Bar*_*t B 13

如果“对象”实际上是一个关联数组而不是一个真正的对象,那么array_keys()它将为您提供所需的内容,而不会出现警告或错误。

另一方面,如果您的对象是真正的对象,那么如果您尝试array_keys()直接使用,则会收到警告。

您可以使用 将对象中的键值对提取为关联数组get_object_vars(),然后您可以使用 从中获取键array_keys()

$keysFromObject = array_keys(get_object_vars($anObject));
Run Code Online (Sandbox Code Playgroud)