ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルでの演算子の使用方法の概要

php_PHP チュートリアルでの演算子の使用方法の概要

WBOY
WBOYオリジナル
2016-07-13 17:15:32878ブラウズ

算術演算子

1. 算術演算子: +、-、*、/、%。

2. インクリメント/デクリメント演算子: $a++、$a--、++$a、--$a など。

例:

コードは次のとおりですコードをコピー
$a=10;
$b=5;
$c=$a++; //最初に値を割り当ててから増分します。 $c=$a,$a=$a+1
$d=$b--; //最初に値を割り当ててから減分します。 $d=$b,$b=$a-1
echo '$a='.$a."||".'$c='.$c.'
' //$a=11,$c=10
echo '$b='.$b."||".'$d='.$d.'
' //$b=4,$d=5
?>
$a=10;
$b=5;
$c=++$a; //最初にインクリメントしてから値を割り当てます。 $a=$a+1,$c=$a
$d=--$b; //最初にデクリメントしてから値を割り当てます。 $b=$a-1、$d=$b
echo '$a='.$a."||".'$c='.$c.'
' //$a=11,$c=11
echo '$b='.$b."||".'$d='.$d.'
' //$b=4,$d=4
?>

三項演算子

(expr1) ? (expr2) : (expr3);

説明: 条件 "expr1" が true の場合はステートメント "expr2" を実行し、そうでない場合は "expr3" を実行します。

次のステートメントは構文的には正しく、小さな引用符で囲まれた 2 番目または 3 番目の「要素」が省略されています。

コードは次のとおりです$a>$b ? print "はい" : ""; $a>$b ? '': 'いいえ' を出力します;三項演算子を使用する場合は、echo ステートメントの代わりに print ステートメントを使用することをお勧めします。
コードをコピー


次の一連の文の理解に注意してください:

コードは次のとおりです$str = $_GET['abc'] '王進博' : 'wjb';これは、次のように理解することはできません: $str が $_GET['abc'] に等しい場合、割り当ては 'wangjinbo' であり、それ以外の場合、割り当ては 'wjb' です。理由 1 は、等しいかどうかを判断するために == を使用する必要があるためです。三項演算子の構文は次のとおりです: (expr1) ? (expr2) : (expr3)、明らかに、上記の 2 項、3 項の 'wangjinbo' または 'wjb' は単独では意味のある式を形成できません。
コードをコピー

正しい理解は次のとおりです: $_GET['abc'] が空の場合 (つまり、PHP の ''、null、0、undifine がすべてブール値 false に等しいかどうか)、$str を 'wangjinbo' に割り当てます。それ以外の場合は、 $str を 'wangjinbo' に割り当てます。値を「wjb」に割り当てます;

論理演算子:

例:

コードは次のとおりですコードをコピー$a=10;$b=7; if($a++>8 || $b++>7){ //$a++>8 が true の場合、$b++>7 は実行されません
「OK!」をエコーし​​ます;

}
echo 'a='.$a.'b='.$b; // 出力OK、a=11,b=7

変更します

$a=10;$b=7;

if($a++>10 && $b++>7){ //$a++>8 が false の場合、$b++>7 は実行されません

「OK!」をエコーし​​ます;

}
echo 'a='.$a.'b='.$b; // a=11,b=7
;

詳細: と && はどちらも論理積を表します。その違いは何ですか?

主に優先的に反映されます

そして優先順位

コードは次のとおりです コードをコピー



ビット演算子

ディスプレイスメントは、PHP の数学演算です。いずれかの方向に移動されたビットは破棄されます。左にシフトすると、右側にゼロが埋め込まれ、符号ビットが移動されます。これは、符号が保持されないことを意味します。右にシフトすると、左側に符号ビットが埋め込まれます。これは、符号が保持されることを意味します。

必要な優先順位を確保するには括弧を使用します。たとえば、$a & $b == true は最初に比較を実行し、次にビット単位の AND を実行します。一方、($a & $b) == true は最初にビット単位の AND を実行してから比較を実行します。

データ型の変換に注意してください。左引数と右引数の両方が文字列の場合、ビット単位の演算子は文字の ASCII 値を操作します。

PHP の ini 設定 error_reporting はビット単位の値を使用します。
ビットをオフにする実際の例が示されています。プロンプトレベル以外を表示するには
php.ini 以外のすべてのエラーは次のように使用されます:
E_ALL & ~E_NOTICE

具体的な操作方法は、まず E_ALL の値を取得することです:
00000000000000000111011111111111
次に、E_NOTICE の値を取得します:
0000000000000000000000000001000
次に、~ によってそれを否定します:
1111111111111111111111111110111
最後に、ビットごとの AND (&) を使用して、両方の値で (1 に) 設定されているビットを取得します。 00000000000000000111011111110111

もう 1 つの方法は、ビットごとの XOR (^) を使用して

のみを取得することです いずれかの値に設定されたビット:
E_ALL ^ E_お知らせ

error_reporting は、ビットの設定方法を示すために使用することもできます。エラーと回復可能なもののみを表示します

間違った方法は:
E_ERROR | E_RECOVERABLE_ERROR

つまり、E_ERROR
0000000000000000000000000000001
および E_RECOVERABLE_ERROR
00000000000000000001000000000000
ビットごとの OR (|) 演算子を使用して、任意の値に設定されたビットの結果を取得します。 00000000000000000001000000000001

例 #1 整数のビット単位の AND、OR、XOR 演算子

コードは次のとおりです /*

* 上のセクションは無視してください
* 出力をわかりやすくするための単なる書式設定です。
*/

$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'

' %3$s (%4$2d = %4$04b)' 。

エコー<<&EOH
--------- --------- -----------

結果値の演算テスト

--------- --------- -----------
ああ;


/*

* 以下は例です。

*/

$values = 配列(0, 1, 2, 4, 8);
$test = 1 + 4;

echo "n ビット単位 AND n";
foreach ($values を $value として) {

$result = $value & $test;

Printf($format, $result, $value, '&', $test);
}

echo "n ビット単位の包含 OR n";
foreach ($values を $value として) {

$結果 = $値;

Printf($format, $result, $value, '|', $test);
}

echo "n ビットごとの排他的論理和 (XOR) n";
foreach ($values を $value として) {

$result = $value ^ $test;

Printf($format, $result, $value, '^', $test);
}
?>
上記のルーチンは次のように出力します:

--------- --------- -- --------
結果値の演算テスト

--------- --------- -----------

ビット単位の AND
( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)
( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)
( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)
( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

ビットごとの包含的 OR
( 5 = 0101) = ( 0 = 0000) ( 5 = 0101)

( 5 = 0101) = ( 1 = 0001) ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) ( 5 = 0101)
(5 = 0101) = (4 = 0100) (5 = 0101)
(13 = 1101) = ( 8 = 1000) ( 5 = 0101)

ビットごとの排他的論理和 (XOR)
( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)

(4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)
(1 = 0001) = (4 = 0100) ^ (5 = 0101)
(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)


比較演算子

数値と文字列を比較する場合、または数値内容を含む文字列を比較する場合、文字列は数値に変換され、数値として比較が実行されます。このルールは switch ステートメントにも適用されます。 === または !== で比較する場合、型と値の両方が比較されるため、型変換は行われません。

コードをコピー
コードは次のとおりです コードをコピー

var_dump(0 == "a"); // 0 == 0 -> var_dump("1" == "01"); // 1 == 1 -> var_dump("10" == "1e1"); // 10 == 10 -> var_dump(100 == "1e2"); // 100 == 100 ->
スイッチ (「a」) {
ケース0:
エコー「0」; 休憩

case "a": // "a" はすでに 0 と一致しているため、到達しません
「a」をエコーし​​ます;
休憩
}
?>



複数の型の場合、比較演算子は次の表に従って (順番に) 比較します。

色々なタイプを比較

オペランド2型null または string を "" に変換しますbool または null、 < オブジェクト
オペランド1種類
結果
文字列 数値比較または字句比較のために <font face="NSimsun">NULL</font>
その他のタイプ bool<font face="NSimsun">FALSE</font><font face="NSimsun">TRUE</font>コード> <font face="NSimsun">FALSE</font> < <font face="NSimsun">TRUE</font>
オブジェクト 組み込みクラスは独自の比較を定義できますが、異なるクラスは定義できません%
http://www.bkjia.com/PHPjc/628810.html

www.bkjia.com

http://www.bkjia.com/PHPjc/628810.html技術記事算術演算子 1. 算術演算子: +、-、*、/、%。 2. インクリメント/デクリメント演算子: $a++、$a--、++$a、--$a など。次のようにコードをコピーします。php $b=5; $a++ ; // 最初に割り当てます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。