如何访问数组的对象(stdClass Object)成员/元素的属性?

时间:2014-01-16 17:14:24

标签: php arrays stdclass

在我的阵列上执行print_r()我得到以下内容:

Array ( 
    [0] => 
        stdClass Object 
        ( 
            [id] => 25 
            [time] => 2014-01-16 16:35:17 
            [fname] => 4 
            [text] => 5 
            [url] => 6 
        ) 
)

如何访问数组中的特定值?由于stdClass对象

,以下代码不起作用
echo $array['id'];

5 个答案:

答案 0 :(得分:74)

要访问数组成员,请使用$array['KEY'];

要访问对象成员,请使用$obj->KEY;

访问对象数组中的对象成员:
$array[0] //获取数组中的第一个对象
$array[0]->KEY //然后访问其密钥

你也可以像这样循环一个对象数组:

foreach ($arrayOfObjs as $key => $object) {
    echo $object->object_property;
}

将数组视为一组事物。它是一个包,你可以存储你的东西,给他们一个唯一的ID(密钥),并使用该密钥访问它们(或从包中取出东西)。我想在这里保持简单,但这个包也可以包含其他包:)

更新(这可能有助于人们更好地理解):

数组包含“key”和“value”对。为数组成员提供密钥是可选的,在这种情况下,它会自动分配一个以0开头的数字键,并为每个其他成员继续增加1。我们可以通过“key”从数组中检索“值”。

因此我们可以通过以下方式定义数组(关于键):

第一种方法:

$colorPallete = ['red', 'blue', 'green'];

上面的数组将自动分配数字键。因此,分配给红色的键将为0,对于蓝色1,依此类推。

从上面的数组中获取值:

$colorPallete[0]; // will output 'red'
$colorPallete[1]; // will output 'blue'
$colorPallete[2]; // will output 'green'

第二种方法:

$colorPallete = ['love' => 'red', 'trust' => 'blue', 'envy' => 'green']; // we expliicitely define the keys ourself.

从上面的数组中获取值:

$colorPallete['love']; // will output 'red'
$colorPallete['trust']; // will output 'blue'
$colorPallete['envy']; // will output 'green'

答案 1 :(得分:18)

试试这个,工作正常 -

{{1}}

答案 2 :(得分:9)

试试这个:

echo $array[0]->id;

答案 3 :(得分:3)

你有一个阵列。 PHP数组基本上是“事物列表”。你的数组中有一个东西。那件事是标准的。你需要从数组中删除东西

$object = array_shift($array);
var_dump($object->id);

或者通过数组中的索引引用它。

var_dump( $array[0]->id );

或者,如果您不确定数组中有多少内容,请遍历数组

foreach($array as $key=>$value)
{
    var_dump($value->id);
    var_dump($array[$key]->id);
}

答案 4 :(得分:0)

这样的事情怎么样?

function objectToArray( $object ){
   if( !is_object( $object ) && !is_array( $object ) ){
    return $object;
 }
if( is_object( $object ) ){
    $object = get_object_vars( $object );
}
    return array_map( 'objectToArray', $object );
}

并使用您的对象调用此函数

$array = objectToArray( $yourObject );

reference