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

Posted

技术标签:

【中文标题】如何访问数组的对象(stdClass Object)成员/元素的属性? [复制]【英文标题】:How to access a property of an object (stdClass Object) member/element of an array? [duplicate] 【发布时间】:2014-02-05 18:02:40 【问题描述】:

在我的阵列上执行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'];

【问题讨论】:

echo $array[0]->id; ***.com/questions/12277268/… 【参考方案1】:

要访问数组成员,请使用 $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'

【讨论】:

谢谢,我以为会很简单 嘿,我不明白 $value 在这里的用途 ..?.. 是的,我是 php 新手 .. 它是我们为查找键值而创建的新变量吗? @CodeLover 例如,如果我们有一个数组$a = ['someKey' => 'someValue'];,那么如果您访问$a['someKey'],您将返回someValue。当我们使用 foreach 循环时,我们可以访问数组中每个成员的键和值。 @LuckySoni 嘿,我知道。但我想知道 echo $value->KEY ..它是做什么的 ..当我在代码中尝试时 ..它没有回应任何东西 如何比较 $key 和字符串?【参考方案2】:

试试这个,效果很好 -

$array = json_decode(json_encode($array), true);

【讨论】:

谢谢!为什么添加true 会转换为数组? @Awena 是的,它用于返回数组。例如。 - json_decode('"foo":"bar"', true); returns array("foo" => "bar");【参考方案3】:

试试这个:

echo $array[0]->id;

【讨论】:

试试这个答案在 *** 上的价值很低,因为它们对 OP 和未来的读者的教育作用很小。无论解决方案是否简单,请努力改进此答案。【参考方案4】:

你有一个数组。 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);

【讨论】:

【参考方案5】:

这样的事情怎么样。

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

【讨论】:

以上是关于如何访问数组的对象(stdClass Object)成员/元素的属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PHP------数组和对象相互转化,stdClass Object转array

我将如何读取这个数组(“stdClass Object”)

stdClass 标准

PHP-使用stdClass将数组转换为对象

把stdclass object 转化成数组

如何使用从 stdClass 对象数组中内爆一列?