【问题标题】:How to access a property of an object (stdClass Object) member/element of an array? [duplicate]如何访问数组的对象(stdClass Object)成员/元素的属性? [复制]
【发布时间】: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'];

【问题讨论】:

标签: php arrays stdclass


【解决方案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;

【讨论】:

  • 试试这个答案在 StackOverflow 上的价值很低,因为它们对 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

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 2012-03-10
      • 2013-10-17
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多