PHP演算子のショートサーキット機能

PHP演算子のショートサーキット機能

1. 論理演算子: 論理 and (&&) および論理 or (||)、短絡特性があります。

PHP の次の 2 つの演算子は、論理演算子の論理積 (&&) と論理和 (||) であり、短絡特性があります。

論理和、1 つの true は true、false は false (1 つの true が返され、すべての false はスキップされて返されません)

$a = 1;
$flag = ($a == 1 || $c = 100); 

echo '$c的值:'.$c.' $flag的值:'.$flag;
//输出 $c的值: $flag的值:1(true隐式转换为字符串1)

論理和演算の結果は、演算子 (||) の両側のいずれかがtrue である限り、結果は「true」を返し、他の式は実行されません。そのため、このステートメントでは、次のようになります。 a の戻り値が "true" であると判断され、a に与えられた戻り値が "true" の場合は実行されなくなります。aの戻り値が" true "の場合、 c への代入は実行されなくなり、短絡現象が発生するため、次の出力ステートメントは内容を出力しません。

論理 AND、true は true、1 つの false は false (すべて true が返され、1 つの false はスキップされて返されません)

$a = 1;
$a == 2 && $c=100; 

echo '$c的值:'.$c.' $flag的值:'.$flag;
//输出 $c的值: $flag的值:(flase隐式转换为空字符串)

ロジックの演算子 and (&&) は、ロジックの演算方法であり、演算子の両側の式が "true" であれば他のステートメントの実行を継続し、直接 "false" 値を返すため、このステートメントは実行されません。 $ c の割り当てを実行しました。

2. ビット単位の演算子: ビット単位の and (&) およびビット単位の or (|)、短絡特性はありません。

ビット単位の演算子: ビット単位の and (&) とビット単位の or (|)、これら 2 つの演算子には短絡特性はありません。演算方法は論理 and および論理 or と似ていますが、短絡現象はありません。 、演算に関与する式のビット単位の演算とパリティ演算がすべて 1 であるため、それ以外の場合は 0 を返し、ビット単位またはパリティ演算が異なる場合は 1 を返し、それ以外の場合は 0 を返します。

ビット単位の OR、パリティは異なる場合は 1 を返し、そうでない場合は 0 (ビット単位の「ビット」はバイナリです)

$a = 1;
$flag1 = ($a == 1 | $c = 100); // 1 | 110 0100 = 110 0101

echo '$c的值:'.$c.' $flag1的值:'.$flag1.' $flag2的值:'.$flag2;
//输出 $c的值:100 $flag1的值:101 $flag2的值:100

ビット単位の論理積では、同じビット演算で両方が 1 の場合は 1 を返し、それ以外の場合は 0 を返します (ビット単位の「ビット」は 2 進数です)。

$a = 1;
$flag1 = ($a == 1 & $c = 100); // 1 & 110 0100 = 0
$flag2 = ($a == 2 & $c = 100); // 0 & 110 0100 = 0
$flag3 = (1 & 1); // 1 & 1 = 1
$flag4 = (12 & 12); // 110 0110 & 110 0110 = 110 0110
$flag5 = (12 & 13); // 110 0110 & 110 0111 = 110 0110
$flag6 = (13 & 12); // 110 0111 & 110 0110 = 110 0110

echo '$c的值:'.$c.' $flag1的值:'.$flag1.' $flag2的值:'.$flag2.' $flag3的值:'.$flag3.' $flag4的值:'.$flag4.' $flag5的值:'.$flag5.' $flag6的值:'.$flag6;
//输出 $c的值:100 $flag1的值:0 $flag2的值:0 $flag3的值:1 $flag4的值:12 $flag5的值:12 $flag6的值:12

3. 判決文における短絡特性の適用

オペレーターのショートサーキット機能により、この機能を使用していくつかの判断ステートメントを記述することができ、プログラムの柔軟性を高めることができます。たとえば、ファイルを開くときの判断に使用できます。

$file = fopen('a.txt','r') or die('文件不存在。');  

このように論理演算子ショートを設定することでファイルの有無の判定を完了することができます。die() コマンドはファイル全体の実行を終了します。die () が存在するまでプログラムが実行されると、プログラムの実行が終了し、ページ内の他のコードは実行されず、エラー メッセージが出力されます。 。

おすすめ

転載: blog.csdn.net/heshihu2019/article/details/132080679