如何在php中更好地构造if语句?

时间:2017-11-28 16:57:46

标签: php

<?php
function example($role) {   
  if($role == var1]) {
    return true;
  } else if(isset($var2) && !empty($var2)) {
    if($role == $var2) {
      return true;
    } else if(isset($var3) && !empty($var3)) {
      if($role == $var3){
        return true;
      } else {
        return false;
      }
    } 
  } 
}

$var1$var2$var3是会话变量。始终设置$var1所以我直接在if语句中检查它。

$var2$var3有时未设置,因此我添加了另一个if语句来检查是否设置了$var2$var3

基本上我必须检查关于$var1$var2$var3的函数的参数,如果参数等于任何变量,则函数应返回值true。

由于$var2$var3并非始终设置,因此我必须检查isset()并且不要为它们清空。我是PHP的新人,如果陈述正确,我无法形成。

该功能的问题在于,如果未设置$var2,则不会检查$var3

我希望检查$var1的参数,如果设置了$var2$var3中的任何一个,那么也应该检查参数。

3 个答案:

答案 0 :(得分:0)

使用一个带有或的条件,并将必须匹配的部分分组。类似的东西:

function example($role){    
    if($role == $var1 || (!empty($var2) && $role == $var2) || (!empty($var3) && $role == $var3)) {
        return true;
    }else{
        return false;
    }
}

应该这样做。如果!emptyisset不为空,则也不需要检查它是否为空。 (例外情况是5个值empty认为是空的)

我还考虑在这里重组数据。如果您将所有$var#存储在数组中,则可以使用http://php.net/manual/en/function.in-array.php

答案 1 :(得分:0)

由于您的大部分条件都会返回true,因此您可以设置代码样式并将所有内容分组:

<?php
function example($role) {   
    if(
        (isset($var1) && !empty($var1) && $role == $var1) ||
        (isset($var2) && !empty($var2) && $role == $var2) ||
        (isset($var3) && !empty($var3) && $role == $var3)
    )
    {
        return true;
    }
    else
    {
        return false;
    }
}

答案 2 :(得分:-1)

你可以直接在函数中传递你的变量并做出类似的事情: 函数示例($ role,$ var1 = null,$ var2 = null,$ var3 = null){...}

然后检查是否为空