0

親クラスの拡張クラスからさまざまなオプションをループしようとしていますが、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;
    }
}
4

1 に答える 1

0

警告: foreach() に無効な引数が指定されました

foreach配列が最初の引数として提供されることを期待していることを伝えています。あなたはそれに提供し$options = $this->options()options()メソッドは空であるため、戻り値はNULLsetting$options = NULLです。

それを回避するには、次のことができます。

$options = $this->options();
if (is_array($options))
    foreach($options as $option) {
        // ...
    }
}
于 2013-02-09T23:45:59.160 に答える