PHP - 如何获取数组中对象的属性?

5
我有一个多维数组($result),其中包含对象。该数组是从一个函数返回的(函数是由我现在无法联系的人创建的)。
当我使用print_r($result[0])测试该数组时,发现其中嵌套了对象。
ABC Object ( 
    [p1] => P1 Object ( 
        [p1-1] => P1_property1 
        [p1-2] => P1_property2 
        [p1-3] => P1_property3
    ) 
    [p2] => ABC_property2 
    [p3] => ABC_property3 
    [p4] => ABC_property4
)

我该如何获取字符串"P1_property1""P1_property3""ABC_property2""ABC_property4"呢?

我是PHP新手,需要帮助!


使用$result[0]['p1']['p1-1']无效吗? - hovmand
@hovmand:如果它是一个对象而不是一个数组,这就不是那样的情况了。必须写成 $result[0]->p1->{'p1-1'} - gen_Eric
@Rocket:当然,这个也可以工作吗?$result[0]::p1::p1-1,为什么在p1-1周围有括号? - hovmand
1
@hovmand:::不是用来表示这个的,它是用来表示static属性的。方括号是因为->p1->p1-1会因为'-'而出现问题。 - gen_Eric
@Rocket 非常感谢!!这个可以工作了,此外,$result[0]-> {'p2'} 是指没有嵌入对象的属性。感谢聪明的提示。 - clerksx
3个回答

5
听起来你需要使用get_object_vars()函数,它将返回一个可访问属性的数组。
class foo {
  public $bar = "foo";
  private $bor = "fizz";
}

$properties = get_object_vars( new foo() );

print_r( $properties );

它的输出结果为:

Array
(
    [bar] => foo
)

谢谢!但我只想获取属性的字符串。我的原始问题下面的评论非常好。 - clerksx

3

尝试使用这个方法来确定那些变量的内容:

var_dump(get_object_vars($result[0]));

谢谢!但我只想获取属性的字符串。我的原始问题下面的评论很好用。 - clerksx

0
This function return all the properties in a class

function get_object_public_vars($object) {
    return get_object_vars($object);
}

这已经在其他答案中提供了 - 重复它们有什么必要? - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接