添加else语句时,if else语句不起作用。php
我有一个if语句,下面还有两个if-else语句。但是,当我在所有语句的末尾添加else语句时,if-else行不再工作 有人能告诉我我做错了什么吗?谢谢你 由于未添加else语句,下面的代码工作正常添加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(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:nofirstName
match、nolastName
match、noaddress
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
的一个字符串值是多少?