如何访问对象的数字属性

时间:2011-05-18 10:45:24

标签: php

我有这个对象:

 stdClass Object ( 
    [0] => stdClass Object ( 
         [type] => A 
         [quantity] => 30 
    )
    [1] => stdClass Object ( 
         [type] => P 
         [quantity] => 129
    ) 
 ) 

但是,我无法访问子对象(例如$Data->0->quantity),因为在PHP中无法访问对象的数字属性。

如何在不诉诸循环的情况下访问子对象?

6 个答案:

答案 0 :(得分:1)

与公共变量的任何对象一样:

$oStdClass->0->quantity = 10;

或者循环播放它们。

foreach($oStdClasses as $oStdClass) {
     $oStdClass->quantity = 10;
}

答案 1 :(得分:1)

这似乎是一个奇怪的极端情况 - 对象通常不应该具有无效的PHP变量名称的属性 - 但它仍然可以获得那里的所有变量。

使用get_object_vars。

// The following code doubles all of the "quantity" properties of 
// all of the sub-objects.
foreach( get_object_vars( $strangObject ) as $key => $value )
{
     // in here, $key will be your (numeric) property name of the outer object
     // and $value will be the object stored at that property.

     $value->quantity *= 2;
}

答案 2 :(得分:0)

使用for-each循环。 (如果我理解你的问题是正确的......)

答案 3 :(得分:0)

通过箭头->运算符访问对象的方法和/或属性。因此,要访问数量,您需要:

$quantity = $object->quantity;

答案 4 :(得分:0)

也许?

foreach($class as $v) echo($v->quantity);

答案 5 :(得分:0)

这是一个有趣的部分。使用变量来解决:

print_r($item->0);

但这有效:

$index = 0;
print_r($item->$index);