PHP 8: PHP 演算子

WBOY
WBOYオリジナル
2016-06-23 14:35:401197ブラウズ

この章では、PHP オペレーターを紹介します。
演算子の問題はどの言語にも存在します。私たちはすでに 1 つ以上のプログラミング言語に精通しているため、それを理解するだけで十分です。
まとめてみましょう。
PHP には多くの種類の演算子があり、C/C++、C#、その他の言語の演算子よりもはるかに多いようです。
算術演算子 代入演算子 ビット演算子 比較演算子 エラー制御演算子 実行演算子 インクリメント/デクリメント演算子 論理演算子 文字列演算子 配列演算子 型演算子 かなりの数があります。

算術演算子

名前

結果

-$a

$a の負の値を反転します。

$a + $b

加算

$a と $b の合計。

$a - $b

引き算

$a と $b の差。

$a * $b

乗算

$a と $b の積。

$a / $b

除算

$a を $b で割った商。

$a % $b

モジュロ

$a を $b で割った余り。

ビット演算子

$ a & $b And (ビット単位の AND) は、 $a と $b のビットはどちらも 1 対 1 です。 $a | $b Or (ビット単位の OR) は、$a または $b のビットを 1 から 1 に設定します。 $a ^ $b Xor (ビット単位の排他的論理和) は、$a と $b の異なるビットを 1 に設定します。 ~ $a Not (ビット単位ではありません) $a のビットを 0 から 1 に設定し、その逆も同様です。 $a

は $a <= $b 以下$a >= $b 以上例

名前

結果

よりも大きいです。

$a が $b 以下の場合は TRUE。

$a が $b 以上の場合は TRUE。

増分/減少演算子

名前

効果

++$a

の値の前に

$a 1 を加算して $a を返します。

$a++

に続いて
は $a を返し、$a の値に 1 を加算します。

--$a

マイナス
$a から 1 を引いて、$a を返します。

$a--

subtract
$a を返し、$a の値を 1 つ減らします。

論理演算子

$a と $b ジョイントのUnion

名前

結果

$a と $b

And (論理積)

$a AND $b の場合は TRUEはすべてTRUEです。

$a または $b

Or (論理和)

$a または $b のいずれかが TRUE の場合は TRUE。

$a xor $b

Xor (排他的論理和)

$a または $b のどちらかが TRUE の場合に TRUE (両方ではない場合)。

! $a

Not (論理的 NOT)

$a が TRUE でない場合は TRUE。

$a && $b

And (論理積)

$a と $b が両方とも TRUE の場合は TRUE。

$a || $b

Or (論理和)

$a または $b のいずれかが TRUE の場合は TRUE。 ... $a + $b

。 $a と $b が同じキー/値ペアを持つ場合は TRUE。 $a と $b が同じキー/値ペアを持ち、同じ順序と型である場合に TRUE。 $a が $b と等しくない場合に TRUE。 $a が $b と等しくない場合は TRUE。 $a が $b と完全に等しくない場合は TRUE。

$a == $b

等しい

$a === $b

一致

$a != $b

等しくない

$a <> $b

等しくない

$a !== $b

不一致

もちろん記載されていない種類もいくつかありますが、それについては後述します。最初にリストされたものを見てみましょう。
上記の演算子に特別な命令がない場合、それらは C# の演算子と似ています。
まず、ビット演算の左シフト (<<) または右シフト (>>) を見てみましょう。実際には違いはなく、シンボルが異なるだけです。 比較アルゴリズムの「==」と「====」を見てください。これら 2 つの違いは何でしょうか。 コードを見てみましょう:
1 2 var_dump ( 0 == " a " ) // 0 == 0 -> true
3 var_dump ( " 1 " == " 01 " ); // 1 == 1 -> true
4
5 switch ( " a " ) {
6 case 0 :
7 echo " 0 " ;
8 Break
9 case " a " : // 到達しない" はすでに 0 と一致しています
10 echo " a " ;
11 Break ;
12 }
2 行目を見てください、なぜ 0 が "a" と等しいのでしょうか?奇妙な。これらが等しい理由は、PHP では整数と文字列を比較すると、文字列が自動的に数値に変換されるためです。ここで疑問が生じます: 文字列を数値に変換する原理は何ですか?原則は次のとおりです。 1) 文字「.」、「e」、または「E」のいずれかが含まれている場合、文字列は浮動小数点として評価されます。それ以外の場合は、整数として扱われます。 :値は文字列の最初の部分によって決まります。文字列が正当な数値データで始まる場合は、その数値が値として使用され、それ以外の場合は値が 0 (ゼロ) になります。有効な数値データはオプションの符号で始まり、その後に 1 つ以上の数字 (オプションで小数を含む)、その後にオプションの指数が続きます。指数は、「e」または「E」の後に 1 つ以上の数字が続きます。例:

1 php
2 $var = 1 + " 10.5 " ;                
3 エコー " 1 + " 10.5 " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
4 $var = 1 + " -1.3e3 " ;              
5 echo " 1 + " - 1.3e3 " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
6 $var = 1 + " bob-1.3e3 " ;          
7 echo " 1 + " bob - 1.3e3 " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
8 $var = 1 + " bob3 " ;                
9 echo " 1 + " bob3 " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
10 $var = 1 + " 10 美しい 鳥 " ;      
11 echo " 1 + " 10 美しい 鳥 " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
12 $var = 4 + " 10.2 リトル アップル " ; 
13 echo " 4 + " 10.2 Little Apple " = " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
14 $var = " 10.0 豚 " + 1 ;          
15 エコー " " 10.0 豚 " + 1= " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
16 $var = " 10.0 豚 " + 1.0 ;        
17 エコー " " 10.0 豚 " + 1.0= " 。 $var 。 " ; タイプ: " 。 gettype($var) 。 "
" ;
18 ?>  
19

出た結果:

1 + " 10.5 " = 11.5 ; タイプ: double
1 + " -1.3e3 " =- 1299 ; タイプ: double
1 + " bob-1.3e3 " = 1 ; タイプ: 整数
1 + " bob3 " = 1 ; タイプ: 整数
1 + " 10 の美しい鳥 " = 11 ; type : integer
4 + " 10.2 Little Apple " = 14.2 ; タイプ: double
" 10.0 pigs " + 1 = 11 ; タイプ: double
" 10.0 pigs " + 1.0 = 11 ; type : double

このように、「===」が 1 つあり、3 つが記号に相当し、最後に変換されていない数値の同等を示します。さらに、タイプもこれに相当します。以下を参照してください。 php
2 var_dump ( 0 === " a " );  // 0 === 0 -> false

3 echo '
' ;
4 var_dump ( 0 === " 00 " );  // 0 === "00" -> false
5 echo '
' ;
6 var_dump ( 0 === 0 );  // 0 === 0 -> true
7 echo '
' ;
8 ?>
出结結果:

bool( false )
bool( false )

bool( true )
6 行目は、値が等しいだけでなく、型も同じであるため true です。
3) 論理演算を見ると、実際には「or」と「and」の書き方が 2 つあります。C/C++、C#、Java などの言語を使用する場合は、「&&」または「||」を使用します。 VB を使用している場合は、and および or を使用します。もちろん両方を使用することもできます。それらの違いは何ですか?それはただ優先順位の違いです。 「&&」と「||」は「and」と「or」よりも優先されます。
4).PHP には追加の配列演算子があります。上記の説明を聞けば、それらを信じるのは難しくありません。

代入演算子 C# 言語と同様に、代入に「=」とバイナリ記号を使用します。例:

$a = ' hello ' ; // $a はこんにちは。
$a += 1; // $a は 1、バイナリ代入演算子
$c = ' hello ' ; // $c は "hello world " ;
?>

エラー実行演算子 PHP はエラー制御演算子 @ をサポートしています。 PHP 式の前に配置すると、式によって生成されるエラー メッセージは無視されます。

track_errors 機能がアクティブ化されている場合、式によって生成されたエラー メッセージは変数 $php_errormsg に保存されます。この変数はエラーが発生するたびに上書きされるため、使用する場合はできるだけ早く確認してください。例:

/* 意図的なファイル エラー */

$my_file = @ file ( ' non_existent_file ' ) または
die ( " ファイルを開けませんでした: エラーは '$php_errormsg' " );これは関数だけでなく、あらゆる式に対して機能します:
$value = @ $cache [ $key ];
// インデックス $key が存在しない場合は通知を発行しません


実行演算子。 PHP は、バッククォート (``) という 1 つの実行演算子をサポートしています。これは単一引用符ではないことに注意してください。 PHP は、バックティックで囲まれた内容をシェル コマンドとして実行しようとし、その出力を返します (たとえば、標準出力に単純に破棄するのではなく、変数に割り当てることができます)。バッククォート演算子「`」を使用すると、関数shell_exec()と同じ効果があります。バッククォートは、キーボードの「~」キーの下にあります。例:
1 2 $out = ` dir c : `;
3 echo '

;は:

ドライブ C のボリュームにはラベルがありません
ボリューム シリアル番号は A019 - 7D77 です


C のディレクトリ:

02 / 24 / 2006 10 : 21 PM ダウンロード

02 / 24 / 2006 10 : 09 PMダウンロード
05 / 13 / 2006 07 : 07 PM 220 cmd

02 / 13 / 2006 11 : 40 PM WINDOWS
02 / 13 / 2006 11 : 47 PM ドキュメントと設定
02 / 1 3 / 2006 11 : 午後57時プログラム ファイル
06 / 24 / 2006 11 : 01 PM 482 , 933 nfzmLog . ログ
05 / 11 / 2006 10 : 28 PM Inetpub
05 / 13 / 2006 07 : 07 PM 4 応答 tx t
07/29 /2006 05 :56 PM 0 Rec . pcm
06 / 24 / 2006 09 : 05 PM nf
07 / 29 / 2006 05 : 56 PM 0 WriteAudrv . wav
07 / 04 / 2006 08 : 52 PM dwnSetup
07/08/ 2006年09月:28 AM TEMP
02 / 14 / 2006 12 : 15 AM NVIDIA
5 File (s) 483 , 157 bytes 10 Dir (s) 2 , 116 , 558 , 848 bytes free


Increment / Decrement Operator
PHP がサポートC style 前後のインクリメントおよびデクリメント演算子。


注: インクリメント/デクリメント演算子はブール値には影響しません。 NULL 値を減分しても効果はありませんが、NULL を増やすと 1 になります。


増加/減少演算子
名前の例 効果 $a の前に
++$a $a プラス 1 を先頭に付けて、$a を返します。
$a++ の後に を実行すると、$a が返され、$a の値に 1 が加算されます。
--$a を 1 つデクリメントし、$a を返します。
$a-- 減算後の処理 $a を返し、$a の値をデクリメントする
型演算子

PHP には、instanceof という型演算子があります。 instanceof は、特定のオブジェクトが指定されたオブジェクト クラスのものであるかどうかを判断するために使用されます。

instanceof 演算子は PHP 5 で導入されました。以前は was_a() が使用されていましたが、is_a() は廃止されたため、instanceof を使用することをお勧めします。

C# ではそうです、Java では PHP と同じ、instanceof です。例:

1 2 クラス A { }
3 クラス B { }
4
5 $thing = new A;
6
7 if ( $thing instanceof A) {
8 echo ' A ' ;
9 }
10 if ( $thing instanceof B) {
11 echo ' B ' ;
12 }
13 ?>


文字列演算子は 2 つあります。 1 つ目は連結演算子 (「.」) で、左引数と右引数を連結した文字列を返します。 2 つ目は連結代入演算子 (「.=」) で、右の引数を左の引数に追加します。これらについては以前に見たことがあるので、例は示しません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。