1

こんにちは、私はここにこのコードを持っています:

public function length($args) {
    if (isset($this->length)) {
        foreach ($this->length as $k => $v) {
            if (strlen($args[$k])>=$v[0] && strlen($args[$k])<$v[1]) {
                return true;
            } else {
                array_push($this->form_errors, $v[2]);
                return false;
            }
        }
    } else { 
        return true;
    }
}

理由はわかりませんが、期待どおりに動作しません。foreach ループは、$args[$k] が 2 つあるにもかかわらず、そのうちの 1 つだけをループします。誰が何が起こっているのか知っていますか?この質問は急いで書いているので、他に何か説明が必要な場合はお知らせください。

ありがとう!

4

1 に答える 1

9

return句の両側にある2つのステートメントif()は、ループの最初の反復で関数を終了します。strlenのものがtrueでtrueを返すか、falseでfalseを返します。とにかく、ループは終了します。

単に次の反復にジャンプしたい場合は、continue代わりにを使用してください。これにより、foreachを続行できます。

于 2012-08-26T02:39:24.930 に答える