通过扩展方法循环:为foreach()提供的参数无效

时间:2013-02-09 19:27:07

标签: php class methods foreach extends

我正在尝试从父类的扩展类中循环遍历不同的选项,但是我的foreach语句一直出现这个错误:

  

警告:为foreach()提供的参数无效

不知道为什么会发生这种情况,不知道我错过了什么?不确定为什么$this->options()没有被识别为数组......我之前有过类似的事情,但我觉得有些事情只是在我的脑海中拍摄:

class parent_class {
    public function my_method() {
        $options = $this->options();
        foreach($options as $option) {
            // ...
        }
    }

    public function options() {
    }
}

class child_one extends parent_class {
    public function options() {
        $options['name_one'] = array(
            'type' => 'type_one',
            'id' => 'id_one',
            'name' => 'name_one'
        );
        return $options;
    }
}

class child_two extends parent_class {
    public function options() {
        $options['name_two'] = array(
            'type' => 'type_two',
            'id' => 'id_two',
            'name' => 'name_two'
        );
        return $options;
    }
}

1 个答案:

答案 0 :(得分:0)

  

警告:为foreach()提供的参数无效

告诉你foreach期望提供的数组作为第一个参数。 您向其提供$options = $this->options(),由于options()方法为空,因此返回值为NULL,因此设置为$options = NULL

为了避免它,你可以:

$options = $this->options();
if (is_array($options))
    foreach($options as $option) {
        // ...
    }
}