gpt4 book ai didi

php - 删除 3 个嵌套的 if-then-else

转载 作者:行者123 更新时间:2023-12-03 21:05:11 26 4
gpt4 key购买 nike

我将这段代码视为数学排列的等价物。它尝试根据 $a、$b、$c 的组合设置 $d 的值。现在它是用 3 个嵌套的 if/then/else 完成的。有没有其他方法可以更有效地完成同样的事情?

if ($a === true) {
if ($b > 0) {
if ($c === true) {
$d = 6;
} else {
$d = 2;
}
$e = $b;
} else {
if ($c === true) {
$d = 4;
} else {
$d = 0;
}
}
} else {
if ($b > 0) {
if ($c === true) {
$d = 5;
} else {
$d = 1;
}
$e = $b;
} else {
if ($c === true) {
$d = 7;
} else {
$d = 3;
}
}
}

注意 $e = $b;

的末尾
if ($a === true) {
if ($b > 0) {
} else {
if ($b > 0) {

我想我会把它从整个外观中删除然后说

if ($b > 0) {

$e = $b; 的逻辑有任何错误吗?

最佳答案

你可以这样做:

$vals = array(3,7,1,5,0,4,2,6);
$d = $vals[((int)($a === true) << 2) + ((int)($b > 0) << 1) + (int)($c === true)];
if ($b > 0) {
$e = $b;
}

这将每个条件作为 3 位值中的一个位来确定 d 值的索引:

index = a·2^2 + b·2^1 + c·2^0

每个条件都会产生一个 bool 值,该值会转换为整数(请参阅 boolean to integer conversion ),然后根据它所代表的位的位置进行移位(请参阅 shift left operator << )。

关于php - 删除 3 个嵌套的 if-then-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com