【问题标题】:PHP: Accessing an object property with a variablePHP:使用变量访问对象属性
【发布时间】:2011-06-10 04:25:10
【问题描述】:

假设我有一个我想访问的对象属性数组:

$properties = array('foo', 'bar');

我想循环访问对象并动态访问这些属性(具体来说,我正在尝试根据预期元素的数组动态处理丢失的 JSON 元素):

foreach ($data as $item) {
    foreach ($properties as $property) {
        if (empty($item->{$property})) {
            // Do something
        }
    }
}

$data 中的每个 $item 都应具有属性 'foo' 和 'bar'。我正在处理 'foo' 或 'bar' 不存在的情况。

我试图让循环(在第 3 行)访问 $item->{'foo'} 和 $item->{'bar'},但它不起作用。

知道为什么吗?我相当肯定这是一个语法问题,但显然我无法弄清楚这一点!

谢谢!

【问题讨论】:

  • 你试过 $data->foo 了吗? ($data->$property)

标签: php json


【解决方案1】:

你能不能不用property_exists($item, $property)

foreach ($data as $item) {
    foreach ($properties as $property) {
        if ( property_exists($item, $property) ) {
            // Do something
        }
    }
}

【讨论】:

    【解决方案2】:

    如果您正在做的事情涉及修改原始项目集,请记住foreach 对原始数组的副本 进行操作。如果要修改原始数组中的内容,则需要使用类似foreach($arr as $k => $v) 的语法,然后修改$arr[$k]

    【讨论】:

      【解决方案3】:

      我想通了……

      我认为我在处理对象的错误部分。

      感谢您提供翔实的答案!

      【讨论】:

      • 您为什么不分享您的解决方案...?
      • @Choy:解决方案就在问题中。我采用的方法是正确的;我只是看错地方了。
      猜你喜欢
      • 2019-12-30
      • 2017-07-05
      • 2021-10-25
      相关资源
      最近更新 更多