PHPでは、「|」はPHPビット演算子、「||」は論理演算子です
ビット演算子コード:
$a=0;
$b=0;
if($a=3 | $b=3){
$a++;
$b++;
}
echo $a.','.$b //出力 4,4
;
?>
コードを比較してください。論理演算子のコードは次のとおりです:
$a=0;
$b=0;
if($a=3 || $b=3){
$a++;
$b++;
}
echo $a.','.$b //出力 1,1
;
?>
上記2つの例のうち、最初の例「$a=3 | $b=3」では、「|」の優先順位が代入演算子よりも高いため、演算の順序は「$a=」と書くことができます。 ( 3 | $b=3)" の場合、最初に $b には値 3 が割り当てられ、$a には 2 進数 0100 | 0100 の値が割り当てられますが、これはまだ 0100 であるため、この時点では $a には値 0100 が割り当てられます。 10 進数で 3 です。代入が成功すると、true が返され、$a の内容がインクリメントされ、$b もインクリメントされます。したがって、$a=4、$b=4 となります。
2 番目の例では、「$a = (3 || $b = 3)」とも見られます。まず、3||$b=3 が true を返し、「||」が短絡を引き起こします。 ||" 3 より前はすでに true であり、"$b=3" はもう実行されないため、この時点では $b はまだ 0、$a はブール型の true、代入は成功し、true が返され、内容はif コード ブロックが実行され、$a++ が返されると true、$b++ は 1 となるため、$a=1、$b=1