ホームページ  >  記事  >  バックエンド開発  >  PHP 論理演算子 & と &&、および && と || の使用の違い

PHP 論理演算子 & と &&、および && と || の使用の違い

伊谢尔伦
伊谢尔伦オリジナル
2017-06-21 14:58:375905ブラウズ

論理演算子は、値に対して論理演算を実行することに他なりません。 (&&) または (||)" これら 2 つの演算子を使用すると、プログラム内の PHP コード の実行速度を向上させることができます。

まずコードの一部を見てください:

<?php   
    $test="李四";   
    $test=="张三"&&$test="张三来了";   
    echo $test;  //输出“李四”   
    $test="李四";   
    $test=="张三"||$test="张三不在这里";   
    echo $test;  //输出“张三不在这里”   
?>

なぜそのような結果が発生するのでしょうか? 次のようにすると通常の方法では、少なくとも IF ステートメントを使用して判断する必要がありますが、変数の値を変更するのは 2 つの論理演算だけです。演算原理は左から順に実行されます。右の「AND」演算のいずれかが false である限り、式全体の結果は false になるため、左の式が false の場合、このような処理を行う必要はありません。これは間違いなくプログラムの実行効率に非常に有益なので、タイトルにあるように効率的な使用法ですが、ロジックが異なります。一方が true である限り、左側が false の場合、式全体が true になります。上記を理解している場合は、右側の式判定を実行する必要があります。

もちろん、上記の例は、現在の状況を条件付きで実現できます。コードの量を減らすこと、そして最も重要なことはプログラムの実行効率を高めることです。これを習得するための鍵は、式の実行方向であり、値が指定されたときに実行を停止します。右辺は式または関数にすることができますが、結局のところ、論理式 のコンポーネントであることには変わりありません。 (&&) 演算: x && y x が false の場合、直接スキップし、y を実行しません。

or (||) 演算の場合: x||y x が true の場合、直接スキップし、y を実行しません。

phpの&と&&の類似点と相違点

<?php
$a=10;
if($a>4 && (++$a>10))
{
}
//输出结果为11.
echo $a;
?>
<?php
$a=10;
if($a>4 and (++$a>10))
{
}
//输出结果为11.
echo $a;
?>
**************************************************************
<?php
$a=10;
if($a>4 && (++$a<10))
{
}
//输出结果为11.
echo $a;
?>
<?php
$a=10;
if($a>4 & (++$a<10))
{
}
//输出结果为11.
echo $a;
?>
*********************************************************
<?php
$a=10;
if($a<4 && (++$a>10))
{
}
//输出结果为10.
echo $a;
?>
<?php
$a=10;
if($a<4 & (++$a>10))
{
}
//输出结果为11.
echo $a;
?>
*******************************************************************
<?php
$a=10;
if($a<4 && (++$a<10))
{
}
//输出结果为10.
echo $a;
?>
<?php
$a=10;
if($a<4 & (++$a<10))
{
}
//输出结果为11.
echo $a;
?>
*******************************************************************
<?php
// 下面的 sktest() 不被调用,原因是它们被运算符“短路”。
$a = (false && sktest());
$b = (true  || sktest());
$c = (false and sktest());
$d = (true  or  sktest());
// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]
var_dump($e, $f);
// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]
var_dump($g, $h);
?>

以上がPHP 論理演算子 & と &&、および && と || の使用の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。