Определение того, какая часть условия является истинной в операторе `if` - PullRequest
0 голосов
/ 17 сентября 2018

Предположим, у меня есть оператор if в PHP, например:

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

Как узнать, какая переменная запустила оператор if?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Я бы предложил использовать оператор 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, и он хранит различное содержимое в зависимости от ситуации.

0 голосов
/ 18 сентября 2018

Это возможно, только если вы немного измените свой способ мышления

$data=7;$data2=false;$data3='';
if($filter=array_filter(compact('data','data2','data3'))){
    echo key($filter);//output data
}

Небольшое объяснение:

сначала мы сжимаем все переменные в один массив с функцией compact, а второймы фильтруем массив с помощью функции array_filter. На этом шаге все готово. Если $filter равно empty, условие if будет оценено как ложное, и если $filter не равно empty, это означает, что по крайней мереодна из переменных отличается от false or null or empty string Тогда, чтобы узнать одну из этой переменной, которая вызвала, если вы можете проверить массив $ filter, особенно первый элемент.

0 голосов
/ 17 сентября 2018

Вы этого не сделаете.

Если вы должны знать, вам нужно условие для каждого из них.

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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...