【问题标题】:How can I acces the N'th object property name?如何访问第 N 个对象属性名称?
【发布时间】:2015-07-01 19:09:28
【问题描述】:

我有一个包含未知数量属性的对象,有没有办法在 PHP 中获取该对象的第 N 个属性名称?

我希望它类似于下面的代码,但它只适用于数组,而不适用于对象:

$key = array_keys($obj)[$i];

假设以下输入:

$obj = stdClass Object
        (
            [ID] => 1
            [name] => Mary Jane
            [count] => 420
        )
$i = 1;

我希望输出是:

ID

【问题讨论】:

  • $obj 不是一个数组,那么你为什么期望一个数组函数可以这样处理它呢?对象不是数组,也没有键,它们有属性
  • 是的,我知道这段代码不起作用,我在问是否有等价的
  • 将对象转换为数组$obj = (array) $obj;
  • $key = array_search($i, (array)$obj);

标签: php arrays object type-conversion


【解决方案1】:

首先将您的对象转换为数组:

$key = array_keys((array)$obj)[$i];

【讨论】:

    【解决方案2】:

    http://php.net/manual/en/function.get-object-vars.php

    你可以使用 get_object_vars()

    【讨论】:

    • 感谢您的输入,但我尝试了建议的两种方法,并且投射对象似乎是解决我的特定问题的更实用的方法。使用这个函数意味着我还需要嵌套 array_keys 函数,例如:array_keys(get_object_vars($a))[$i];
    【解决方案3】:

    刚刚用foreach试了一下:

    foreach ($obj as $attr)
    {
       var_dump($attr);
    }
    

    它可以工作,但你需要一个计数器根据迭代次数递减然后中断。

    编辑:get_object_vars 更好,抱歉。

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2015-08-05
      相关资源
      最近更新 更多