PHP:使用变量访问对象属性

时间:2011-01-16 23:50:47

标签: php json

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

$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'},但它无效。

知道为什么吗?我很确定这是语法问题,但显然我无法弄明白这一点!

谢谢!

3 个答案:

答案 0 :(得分:3)

你能否使用property_exists($item, $property)

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

答案 1 :(得分:1)

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

答案 2 :(得分:-3)

我明白了......

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

感谢您提供丰富的答案!