<?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
中的任何一个,那么也应该检查参数。
答案 0 :(得分:0)
使用一个带有或的条件,并将必须匹配的部分分组。类似的东西:
function example($role){
if($role == $var1 || (!empty($var2) && $role == $var2) || (!empty($var3) && $role == $var3)) {
return true;
}else{
return false;
}
}
应该这样做。如果!empty
和isset
不为空,则也不需要检查它是否为空。 (例外情况是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){...}
然后检查是否为空