假设我有一个我想要访问的对象属性数组:
$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'},但它无效。
知道为什么吗?我很确定这是语法问题,但显然我无法弄明白这一点!
谢谢!
答案 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)
我明白了......
我认为我正在处理对象的错误部分。
感谢您提供丰富的答案!