Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
添加else语句时,if else语句不起作用。php_Php - Fatal编程技术网

添加else语句时,if else语句不起作用。php

添加else语句时,if else语句不起作用。php,php,Php,我有一个if语句,下面还有两个if-else语句。但是,当我在所有语句的末尾添加else语句时,if-else行不再工作 有人能告诉我我做错了什么吗?谢谢你 由于未添加else语句,下面的代码工作正常 if(strtoupper($userData->firstName) == strtoupper($input)) { $firstUser = Subscriber::where('firstName', $input)->get();

我有一个if语句,下面还有两个if-else语句。但是,当我在所有语句的末尾添加else语句时,if-else行不再工作

有人能告诉我我做错了什么吗?谢谢你

由于未添加else语句,下面的代码工作正常

if(strtoupper($userData->firstName) == strtoupper($input)) {
            $firstUser = Subscriber::where('firstName', $input)->get();
            array_push($fillter, $firstUser);
            // return $fillter;
            return view('pages/results', compact('fillter'));
            
            } else if(strtoupper($userData->lastName) == strtoupper($input)) {
                    $lastUser = Subscriber::where('lastName', $input)->get();
                    array_push($fillter, $lastUser);
                    // return $fillter;
                    return view('pages/results', compact('fillter'));
                
                    } else if(strtoupper($userData->address) == strtoupper($input)) {
                        $addressUser = Subscriber::where('address', $input)->get();
                        array_push($fillter, $addressUser);
                        // return $fillter;
                        return view('pages/results', compact('fillter'));
                        
                        } 
下面的代码不起作用,因为我添加了else语句

if(strtoupper($userData->firstName) == strtoupper($input)) {
            $firstUser = Subscriber::where('firstName', $input)->get();
            array_push($fillter, $firstUser);
            // return $fillter;
            return view('pages/results', compact('fillter'));
            
            } else if(strtoupper($userData->lastName) == strtoupper($input)) {
                    $lastUser = Subscriber::where('lastName', $input)->get();
                    array_push($fillter, $lastUser);
                    // return $fillter;
                    return view('pages/results', compact('fillter'));
                
                    } else if(strtoupper($userData->address) == strtoupper($input)) {
                        $addressUser = Subscriber::where('address', $input)->get();
                        array_push($fillter, $addressUser);
                        // return $fillter;
                        return view('pages/results', compact('fillter'));
                        
                        } else { 
                               return view('pages/empty');
                        }

由于else块中的返回,else可能会缩短任何其他匹配

例如,如果您搜索jane,而这不在第一个
$userData
条目中的任何位置,则将转到else:no
firstName
match、no
lastName
match、no
address
match,然后else将视图返回为no results(这也会退出foreach)并且不会继续搜索其他
$userData
条目

此示例应按预期工作:

function search($request) {
    $user = DB::table('subscribers')->get();
    $input = $request->input('query');
    $fillter = [];
    
    foreach ($user as $userData) {
    
        if (strtoupper($userData->firstName) == strtoupper($input)) {
            $firstUser = Subscriber::where('firstName', $input)->get();
            array_push($fillter, $firstUser);
    
        } else if (strtoupper($userData->lastName) == strtoupper($input)) {
            $lastUser = Subscriber::where('lastName', $input)->get();
            array_push($fillter, $lastUser);
    
        } else if (strtoupper($userData->address) == strtoupper($input)) {
            $addressUser = Subscriber::where('address', $input)->get();
            array_push($fillter, $addressUser);
    
        }
    }
    
    if (!empty($fillter)) {
        return view('pages/results', compact('fillter'));
    } else {
        return view('pages/empty', compact('fillter'));
    }
}

view()
函数是否需要两个参数。。。如果是这样,那么在else中只传递1。我应该澄清,当我添加else语句时,它似乎忽略了If-else语句,而只是在底部运行else语句。因此,当我查询有效的内容时,它只会将我带到else语句中的视图。这意味着前面的其他条件都不满足,因此else获胜。我们不知道在第一个
if
之前的处理,因此您可能必须在该点之前回显/print/print\r/var\u转储一些值,以查看
$userData
$input
值包含什么。当我var\u dump$userData时,我得到这个对象,当我var\u dump$input时,我得到字符串。但是,当我添加$input时,它只返回一个字符串。这是我为那些变量$user=DB::table('subscribers')->get()编写的代码$输入=$request->input('query');那么,
$input
的一个字符串值是多少?