php oop开关案例不起作用
我的交换机案例将每个用户重定向到第一个案例,有什么问题吗? 我希望“总统”将重定向到admin.phpphp oop开关案例不起作用,php,oop,switch-statement,case,Php,Oop,Switch Statement,Case,我的交换机案例将每个用户重定向到第一个案例,有什么问题吗? 我希望“总统”将重定向到admin.php <?php require "header.php"; ?> <?php if ( ! isset($_SESSION['email']) ) { $msg = urlencode('U dient ingelogd te zijn om op deze pagina te kunnen komen.'); header('location: login.php?msg='
<?php require "header.php"; ?>
<?php
if ( ! isset($_SESSION['email']) ) {
$msg = urlencode('U dient ingelogd te zijn om op deze pagina te kunnen komen.');
header('location: login.php?msg=' . $msg);
die();
}
$role = $_SESSION['jobTitle'];
switch($role) {
case 'Finance' AND 'VP Finance':
header('location: finance.php');
break;
case 'VP Sales' AND 'Sales Manager (NA)' AND 'Sales Rep':
header('location: sales.php');
break;
case 'President':
header('location: admin.php');
break;
default:
session_destroy();
header('location: login.php');
}
?>
</div>
</body>
</html>
这是我的数据库
和语句不能用于开关情况。。。尝试以下方法以实现相同的效果:
switch($role) {
case 'Finance':
case 'VP Finance':
header('location: finance.php');
break;
case 'VP Sales':
case 'Sales Manager (NA)':
case 'Sales Rep':
header('location: sales.php');
break;
case 'President':
header('location: admin.php');
break;
default:
session_destroy();
header('location: login.php');
}
我想你的意思是或而不是和。
您正在尝试将和的结果与$role变量进行比较。和的结果总是正确的。
你可以重写
switch($role) {
case 'Finance':
case 'VP Finance':
header('location: finance.php');
break;
case 'VP Sales':
case 'Sales Manager (NA)':
case 'Sales Rep':
header('location: sales.php');
break;
case 'President':
header('location: admin.php');
break;
default:
session_destroy();
header('location: login.php');
}
或者你可以在盒子里写些更复杂的表达
switch(true) {
case ($role == 'Finance' OR $role == 'VP Finance'):
header('location: finance.php');
break;
case ($role =='VP Sales' OR $role =='Sales Manager (NA)' OR $role =='Sales Rep'):
header('location: sales.php');
break;
case $role == 'President':
header('location: admin.php');
break;
default:
session_destroy();
header('location: login.php');
}
尝试删除CASE'Finance'CASE'FinanceVP Finance'后的条件:标题'location:Finance.php';打破你是说这个吗?难道workwrite不是唯一的案例“Finance”吗?你从哪里学来的,并改变了案例的用法?他们被定义为某处吗?他不是指或。。。你的答案提供了解决方案。。。你的陈述与你的代码不符…@RichardBernards,你确定吗?是的。。。有人打字,通常意味着。。。更新后的答案确实是使用OR的一个例子。@RichardBernards,对不起,变量不能同时等于两个值。它可以等于第一个值或!到第二个值。@RichardBernards如果你看一下问题中代码的意图,你会发现他想为财务和副财务角色运行第一个案例。这意味着需要对该角色的财务或副财务进行测试。正如sectus指出的,在同一个变量位于左右两侧的情况下进行布尔AND测试没有任何意义,它永远不会匹配。