php优化if语句,php - 如何在php中优化64 if else if语句 - SO中文参考 - www.soinside.com
讓我們以符合邏輯的方式在數學上解決它。
我們可以看到,一個不同的恒河猴因子預示著一個男孩,一個男孩是平等的。血型方案類似。如果兩種類型都是偶數或奇數,則預測女孩,如果偶數/奇數不同,則預測男孩。有一個例外,當至少有一個血型是III或IV時,那么血型通常會預測男孩。
與通常的信息學一樣,我們對血型I-IV使用零基礎的0-3枚舉。這樣我們使用二進制數00,01,10,11,即2位。如果設置了較低位,則id號是奇數(即,甚至類型I-IV)。如果設置了第二位,我們有III或IV類型之一。
第三位(值4)我們將用來表示“恒河猴因子+”。
我們可以生成標簽,保留最后選擇的選項,如:
function blood_options($sel)
{
foreach(['O(I)', 'A(II)', 'B(III)', 'AB(IV]'] as $k => $v)
{
?>
><?php echo $v, ' Rh-'?>;
><?php echo $v, ' Rh+'?>;
}
}
一個按位XOR運算,PHP中的^運算符,表示兩個操作數的每個位的差異。我們可以用它來檢查第3位(值4,我們的Rhesus因子位)和位0(值1,偶數/奇數)。
$m = intval($_POST['groupM']); // get the numeric value
$f = intval($_POST['groupF']); // get the numeric value
$xor = $m ^ $f; // indicate bitwise differences
現在我們可以看出,血型和恒河猴因子預測了哪些性別:
$type1 = 1 & $xor ; // last bit of (m xor f) => even/odd group different
$type2 = 1 & (($m | $f)>>1); // at least one of the second bits set => there is a group 2 (III) or 3 (IV)
$type = $type1 | $type2 ; // => 1 if at least one of type1 or type2 indicates maskulinum
$rhf = 1&($xor>>2) ; // different rhesus? => 1 indicates maskulinum
$result = $type + $rhf ; // sum results in 0: 2x femininum ; 1: 1x m + 1x f ; 2: 2x maskulinum
var_dump($type1, $type2, $type,
在上面的代碼中,我們還使用SHIFT LEFT運算符>>將有效位移動到位置0(值1),并通過AND運算1 &屏蔽掉所有其他位。
在將總和計算為$result后,我們得到了
0 = 2個預測:女孩
1 =不同的預測
2 = 2個預測:男孩
Putting it all together and written in short expressions, it finally looks like that:
if(isset($_POST['groupM'], $_POST['groupF']))
{
$m = intval($_POST['groupM']);
$f = intval($_POST['groupF']);
$xor = $m ^ $f;
echo
[
"It's a girl",
"Baby's gender can not be predicted — Rh factor and blood type produce different results.",
"It's a boy"
][(1 & ((($m | $f)>>1) | $xor)) + (1&($xor>>2))];
}
The HTML generation:
function blood_options($sel)
{
foreach(['O(I)', 'A(II)', 'B(III)', 'AB(IV]'] as $k => $v)
{
?>
><?php echo $v, ' Rh-'?>;
><?php echo $v, ' Rh+'?>;
}
}
?>
Father's blood group:
Mother's blood group:
總結
以上是生活随笔為你收集整理的php优化if语句,php - 如何在php中优化64 if else if语句 - SO中文参考 - www.soinside.com的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机php什么意思,我们所说的计算机一
- 下一篇: php下载文件压缩包已经损坏或未知格式,