确定条件中哪一部分在if语句中为真

时间:2018-09-17 20:34:36

标签: php if-statement

假设我在PHP中有一个if语句,如下所示:

if($var || $var2 || $var3){
  //code
}

我怎么知道哪个变量触发了if语句?

3 个答案:

答案 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函数过滤数组 在此步骤中,所有步骤都已完成。如果$filterempty,则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,并且根据情况存储不同的内容。