我完全不知道我现在做错了什么。我想我精神上很疲惫,因为我完全无能为力。这是我正在使用的代码:
if(empty($this->updates) || !is_array($this->updates))
return null;
foreach($this->updates as $update)
这是失败的。但是,如果我在foreach(及之后)之前执行print_r($ this-> updates),它的工作原理非常好。为什么当我尝试在foreach中使用它时假装数组不存在?
示例print_r($ this-> updates):
Array
(
[0] = Array
(
[id] => 1
[name] => test
)
[1] = Array
(
[id] => 2
[name] => rawr
)
)
答案 0 :(得分:1)
看起来$this->updates
不是空的,但它不是数组。在is_array
:
foreach
测试
if(is_array($this->update)) {
foreach($this->updates as $update) {
.....
}
}
答案 1 :(得分:1)
由于你没有说出$this->updates
是什么,我可以简单地假设它不是一个数组。在这里,您有两个选择:
1-将empty()
替换为!is_array()
以检查$this->updates
是否有效。如果它是空的,那没关系,foreach
将什么都不做......
if(!is_array($this->updates))
return null;
foreach($this->updates as $update)
或者foreach
不是您唯一的处理方式:
if(empty($this->updates) || !in_array($this->updates))
return null;
foreach($this->updates as $update)
2-强制$this->updates
成为数组
if(empty($this->updates))
return null;
foreach((array) $this->updates as $update)