有什么方法可以简化这段代码吗?"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++;
}
好吧,根据给出的内容,我会选择这样的东西:
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;
假设这是一种支持-=
运算符的语言。
我不知道这是什么语言,但是:
elseif(@@CER_BioMed == "Y" && @@CER_PO != "Y")
@%ISINDEX=4; // or 5
elseif(@@CER_BioMed != "Y" && @@CER_PO == "Y")
@%ISINDEX=4; // or 5
似乎是OR
:的一个明显例子
elseif(@@CER_BioMed == "Y" || @@CER_PO == "Y")
@%ISINDEX=4; // or 5
使用计算0到7之间的数字
lookup_table_index = (
((@@Employee_Position=="Manager") << 2)
| ((@@CER_BioMed == "Y") << 1)
| (@@CER_PO == "Y"))
然后将其用作长度为8的数组的索引,该数组具有@%index的值。
lookup_table = [4, 5, 5, 6, 3, 4, 4, 5]
然后你就可以计算你的指数
INDEX = lookup_table[lookup_table_index]