Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么switch语句总是转到默认值?_Php_Codeigniter - Fatal编程技术网

Php 为什么switch语句总是转到默认值?

Php 为什么switch语句总是转到默认值?,php,codeigniter,Php,Codeigniter,好的,我查了所有的东西,甚至试着删减我的输入。但无论我做什么,我的switch语句始终默认为default语句。 但是当alphanum结果为FALSE时,它会显示错误消息以及默认错误消息。它最终显示了他们两个。。这是没有意义的,因为案例陈述通常只是一个结果 谁能告诉我为什么会这样 function match_pattern($str, $pattern) { $pattern = trim($pattern); switch($pattern) {

好的,我查了所有的东西,甚至试着删减我的输入。但无论我做什么,我的switch语句始终默认为default语句。 但是当alphanum结果为FALSE时,它会显示错误消息以及默认错误消息。它最终显示了他们两个。。这是没有意义的,因为案例陈述通常只是一个结果

谁能告诉我为什么会这样

function match_pattern($str, $pattern) {
        $pattern = trim($pattern);
        switch($pattern) {
            case 'alphanum':
                if( ! preg_match('/^[A-Za-z0-9]{1,}$/', $str))
                {
                    //error message must be same as function name
                    $this->set_message('match_pattern', 'The %s field must only contain alpha-characters or numbers!');
                    return false;  //failed
                }
                break;
            case 'numeric':
                if( ! preg_match('/^[0-9]{,}%/', $str)) {
                    $this->set_message('match_pattern', 'The %s field must only contain numeric characters!');
                    return false; //failed
                }
                break;
            default:
                $this->set_message('match_pattern', 'Invalid pattern');
                return false;
        }
        return true;  //passed
    }
这就是所谓的:

$this->form_validation->set_rules('username', 'Username', 'required|match_pattern[alphanum]|min_length[3]|max_length[25]|is_unique[user.username]');
是的,这是CodeIgniter。。如果alphanum显示为false(在本例中为true),它将显示错误消息。但是,如果我键入“lilmousiee”,它不会显示错误消息,因为它传递preg_match表达式。
但无论我键入什么,它总是显示“无效模式”错误消息。有时,当我输入“lilmousiee6”时,它会显示这一点和alphanum错误消息,因为它不允许空格。它是如何同时显示默认值和另一个值的?。。这里有些不对劲…

@femtoRgon是对的!我有一个match_模式[alpha_num_space],但是没有case语句,所以它也是默认的! 因此,它有时会显示两条错误消息


谢谢大家!

我很确定,“%s字段必须只包含字母字符或数字!”和“无效模式”的唯一方法是多次调用此函数。如果在输出消息中附加$str和$pattern,我很想知道你会看到什么。天哪,你是对的,我有一个匹配的模式[alpha_num_space],但从未提出过这个论点d:OMG,谢谢!!你应该把它作为答案贴出来,然后结束这个问题