这是我正在处理的代码的一部分:
if($access == 2)
{
if ($permre['pages'] == indi_add)//
{echo "show page";}
if ($permre['pages'] == mass_add)//
{echo "show page";}
if ($permre['pages'] == export)//
{echo "show page";}
}
elseif ($access == 0)
{
if ($permre['pages'] == indi_add)//
{echo "dont show page";}
if ($permre['pages'] == mass_add)//
{echo "dont show page";}
if ($permre['pages'] == export)//
{echo "dont show page";}**
}
我正在创建一个页面,当执行$access == 2
等条件时,它有多个值。一些值包括:indi_add,mass_add和export。然后我想使用这些值创建3个条件,如上所示。
但是,执行此代码时,只执行第一个if语句而其余的不执行。有没有我可以让php一次检查3 if语句并执行请求的操作?
加上,我不能使用if(condition1 && condition2 && condition3)
,因为有可能不满足其中一个条件。
那么即使第一个语句是真还是假,我该如何执行所有语句呢?我实际上从phpmyadmin数据库获取indi_add,mass_add和export等值。查询是这样的:
“从access = 2”的访问中选择页面。
由于上面的查询,我得到的页面值是上面提到的。 echo页面只是一个例子。在我的实际编码中,如果access == 2
的语句为真,则结果是将激活特定页面。我正在尝试做一些像访问控制的事情。此外,在场景后面,管理员可以更改每个页面的访问级别。因此,每次访问级别更改时,上述查询可能会带来不同的结果。我希望找到一种方法,只要它们是真的,我就可以执行if条件。
答案 0 :(得分:3)
你说“它有多个值”。有什么?因为这个块:
if ($permre['pages'] == indi_add)// {echo "show page";}
if ($permre['pages'] == mass_add)// {echo "show page";}
if ($permre['pages'] == export)// {echo "show page";}
只有1次点击。变种$permre['pages']
只能有一个值。每次运行脚本时都不同,为true,但每次运行时,它不能同时具有“indi_add”和“mass_add”。
另外:wat是indi_add
。不应该是"indi_add"
,如果它是一个字符串,或$indi_add
,如果它是一个变量?
答案 1 :(得分:2)
我会使用开关而不是所有if语句
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
答案 2 :(得分:0)
我会选择这样的事情:
switch($access) {
case 2:
switch($premre['pages']) {
case "indi_add":
case "mass_add":
case "export":
echo "show page";
break;
}
break;
default:
echo "not show page";
break;
}
如果你需要为每个语句发生个别事情,只需将其添加到他们的案例中,然后打破它。默认情况下也是如此,如果你需要特定的东西,只需用与第一个类似的情况替换它。
编辑:通过OP
的请求为每个案例添加代码的示例switch($access) {
case 2:
switch($premre['pages']) {
case "indi_add":
echo "something happens here when indi_add is run";
doSomething(); //Runs a function for indi_add
break;
case "mass_add":
echo "something happens here when mass_add is run";
doSomethingElse(); //Runs another function for indi_add
break;
case "export":
echo "show page for export";
break;
}
break;
default:
echo "not show page";
break;
}
答案 3 :(得分:0)
也许我误解了,但是单个变量不能有多个值。
但是,如果以某种方式编码,则包含多个值。在这种特殊情况下,您可能正在寻找位掩码/标志。
首先定义“值”,确保不重叠位模式(除非在您的系统中允许这样做):
define('indi_add', 0x0001);
define('mass_add', 0x0002);
define('export', 0x0004);
现在,您可以使用按位OR运算符|
将这些组合成变量:
$permre['pages'] = indi_add | mass_add;
最后,使用按位AND运算符&
来检查变量是否包含其中一个标志:
if ($permre['pages'] & indi_add)//
{echo "show page";}
if ($permre['pages'] & mass_add)//
{echo "show page";}
if ($permre['pages'] & export)//
{echo "show page";}