循环通过扩展的方法:对的foreach()提供的无效参数
我试图通过从扩展类在我父类不同的选择循环,但我不断收到此错误与我的foreach语句:循环通过扩展的方法:对的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;
}
}
警告:无效)提供的foreach参数(
是告诉你foreach
期望的阵列,以被提供给作为第一个参数。 您提供给它$options = $this->options()
且由于options()
方法为空,因此返回值为NULL
因此设置为$options = NULL
。
为了避免它,你可以:
$options = $this->options();
if (is_array($options))
foreach($options as $option) {
// ...
}
}
这确实消除了错误,但我确实需要'foreach'来从扩展类中遍历每个'$ this-> options()'的情况,但它仍然不会这样做,因为我可以不知道。 :/ – 2013-02-10 00:25:37
@AlexMangini你的'$ this-> options()'没有返回任何东西。你已经将'options'定义为一个空方法('public function options(){}')。 – Shoe 2013-02-10 01:40:47
是的,我定义了它,所以扩展类可以覆盖该空方法。否则,我会得到错误,$ this-> options()是一个未定义的方法。 – 2013-02-10 01:51:25
哪种语言? – Dukeling 2013-02-09 19:42:34
尝试var_dump()变量以查看它是否被视为数组。 – fedorqui 2013-02-09 21:03:06
嘿@Dukeling,这是PHP。 – 2013-02-09 23:11:06