Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php oop开关案例不起作用_Php_Oop_Switch Statement_Case - Fatal编程技术网

php oop开关案例不起作用

php 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='

我的交换机案例将每个用户重定向到第一个案例,有什么问题吗? 我希望“总统”将重定向到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=' . $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测试没有任何意义,它永远不会匹配。