为foreach()提供的参数无效

时间:2010-09-28 13:10:15

标签: php

我完全不知道我现在做错了什么。我想我精神上很疲惫,因为我完全无能为力。这是我正在使用的代码:

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
    )
)

2 个答案:

答案 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)