假设我在PHP中有一个if
语句,如下所示:
if($var || $var2 || $var3){
//code
}
我怎么知道哪个变量触发了if
语句?
答案 0 :(得分:1)
你没有。
如果必须知道,则每个条件都需要一个条件。
if ($var1) {
// Do someting
} elseif ($var2) {
// Do something else
} // etc...
或者,如果您要通过这种方式检查多个条件,则可以为此劫持switch
:
switch(true) {
case $var1:
// Do something
break;
case $var2:
// Do something else
break;
// etc.
}
答案 1 :(得分:1)
只有当您改变思维方式时才有可能
$data=7;$data2=false;$data3='';
if($filter=array_filter(compact('data','data2','data3'))){
echo key($filter);//output data
}
一些解释:
首先,我们使用compact
函数将所有变量压缩到一个数组中
第二,我们用array_filter
函数过滤数组
在此步骤中,所有步骤都已完成。如果$filter
为empty
,则if
条件将被评估为false,如果$filter
不是empty
,则意味着至少变量之一与false or null or empty string
不同
然后知道是否触发了该变量中的一个,是否可以特别检查$ filter数组的第一个元素。
答案 2 :(得分:0)
我建议使用switch语句代替if语句。
switch ($var) {
case "content of var1":
code to be executed if $var = "content of var1";
break;
case "content of var2":
code to be executed if $var = "content of var2";
break;
case "content of var3":
code to be executed if $var = "content of var3";
break;
...
default:
code to be executed if $var is something else;
}
请注意,引号“”内的所有内容都是字符串,因此应该是$ var1,$ var2或$ var3可能包含的任何内容。
还请注意,在此示例中,只有一个$ var,并且根据情况存储不同的内容。