有没有办法简化这段代码? “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触发器。
答案 0 :(得分:5)
因为我不知道那是什么语言,所以我会保持语言不可知:
isindex = 3;
if (employee_position != 'manager') {
isindex++;
}
if (cer_biomed == 'y') {
isindex++;
}
if (cer_po == 'y') {
isindex++;
}
答案 1 :(得分:0)
我不知道这是什么语言,但是:
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
答案 2 :(得分:0)
嗯,根据给出的内容,我会选择这样的东西:
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;
假设这种语言支持-=
运算符。
答案 3 :(得分:0)
使用
计算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]