Php 有没有办法简化这段代码,提高效率?

Php 有没有办法简化这段代码,提高效率?,php,language-agnostic,Php,Language Agnostic,有没有办法简化这段代码?“elseif”语句似乎不起作用,导致我的应用程序抛出错误 if(@@Employee_Position=="Manager") { if(@@CER_BioMed == "Y" && @@CER_PO == "Y") @%ISINDEX=5; elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y") @%ISINDEX=4; elseif(@@C

有没有办法简化这段代码?“elseif”语句似乎不起作用,导致我的应用程序抛出错误

if(@@Employee_Position=="Manager") {

    if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
        @%ISINDEX=5;
    elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
        @%ISINDEX=4;
    elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
        @%ISINDEX=4;
    else
        @%ISINDEX=3;
    }
else {
    if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
        @%ISINDEX=6;
    elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
        @%ISINDEX=5;
    elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
        @%ISINDEX=5;
    else
        @%ISINDEX=4;
}

更新:很抱歉不清楚。第一次在这里发布。它是用php语言编写的。它是Processmaker BPS的php触发器。

因为我不知道那是什么语言,所以我会让它保持某种语言无关性:

isindex = 3;
if (employee_position != 'manager') {
    isindex++;
}
if (cer_biomed == 'y') {
    isindex++;
}
if (cer_po == 'y') {
    isindex++;
}

我不知道这是什么语言,但是:

elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
              @%ISINDEX=4;    // or 5
           elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
              @%ISINDEX=4;    // or 5
似乎是
的明显例子:

elseif(@@CER_BioMed == "Y" || @@CER_PO == "Y")
              @%ISINDEX=4;    // or 5

好吧,根据给出的,我会这样说:

if(@@CER_BioMed == "Y" && @@CER_PO == "Y")
    @%ISINDEX=5;
elseif(@@CER_BioMed != "Y" XOR @@CER_PO != "Y")
    @%ISINDEX=4;
else
    @%ISINDEX=3;

if(@@Employee_Position=="Manager")
    @%ISINDEX-=1;

假设这是一种支持
-=
运算符的语言。

使用

lookup_table_index = (
    ((@@Employee_Position=="Manager") << 2)
     | ((@@CER_BioMed == "Y") << 1)
     | (@@CER_PO == "Y"))
然后你可以计算你的索引

 INDEX = lookup_table[lookup_table_index]

您已将其标记为php和javascript。。。是哪一个?我猜是php?这是什么语言?似乎是一个模板,将由php或JavaScript填充。哦,不,等等。。这是密码!有人问过,但我无能为力;说真的,这是什么语言?在第一个
if
语句的上下文中,这无关紧要,实际上是
异或
,而不是
。这感觉有点脆弱,在以后重新访问代码时容易崩溃。
 INDEX = lookup_table[lookup_table_index]