この章では、PHP でのさまざまな演算子の使用について説明します。
PHP では、代入演算子 = を使用して変数に値を代入します。
PHP では、値を加算するために算術演算子 + が使用されます。
オペレーター | 名前 | 説明する | 例 | 結果 |
---|---|---|---|---|
x + y | 追加 | xとyの合計 | 2+2 | 4 |
x-y | 減らす | xとyの差 | 5-2 | 3 |
x*y | 取る | xとyの積 | 5*2 | 10 |
x/y | 取り除く | x と y の商 | 5/15 | 3 |
x %y | モジュロ (除算の余り) | xをyで割ったときの余り | 5% 210% 810% 2 | 120 |
-× | 否定する | ×を否定する | -2 | -2 |
a.b | 並置する | 2つの文字列を連結する | 「こんにちは」「はぁ」 | やあ |
次の例は、さまざまな算術演算子を使用したさまざまな結果を示しています。
<?php $x = 10 ; $ y = 6 ; ( $ x + $y ) //出力 16エコー' <br> ' ; //改行 エコー( $x - $ y ) //出力 4エコー' <br> ' ; //改行 エコー( $x * $ y ) //出力 60エコー' <br> ' ; //改行 エコー( $x / $y ) ; //出力 1.6666666666667エコー' <br> ' ; //改行 エコー( $x % $y ) ; //出力 4エコー' <br> ' ; //改行 エコー- $x ? >
PHP7+ バージョンには、新しい整数除算演算子intdiv()があり、使用例は次のとおりです。
<?php var_dump ( intdiv ( 10,3 ) ) ? >
上記の例では次のように出力されます。
int(3)
PHP では、基本的な代入演算子は「=」です。これは、左側のオペランドが右側の式の値に設定されることを意味します。つまり、「$x = 5」の値は 5 です。
オペレーター | に相当 | 説明する |
---|---|---|
x = y | x = y | 左側のオペランドは右側の式の値に設定されます |
x += y | x = x + y | 追加 |
x -= y | x = x - y | 減らす |
x*=y | x = x * y | 取る |
x /= y | x = x / y | 取り除く |
x%=y | x = x %y | モジュロ (除算の余り) |
a .= b | a = a . b | 2つの文字列を連結する |
次の例は、さまざまな代入演算子を使用したさまざまな結果を示しています。
<?php $ x = 10 ; $x ; //出力 10 $y = 20 ; $y + = 100 ; $y ; //出力 120 $z = 50 ; $z - = 25 ; $z ; //出力 25 $i = 5 ; $i * = 6 ; $i ; //出力 30 $j = 10 ; $j / = 5 ; $j ; //出力 2 $k = 15 ; $k % = 4 ; $k ; //出力 3 ?>
次の例は、異なる文字列演算子を使用して同じ結果を示しています。
<?php $a = "こんにちは" ; $ b = $ a . "エコー" $b ; //出力 Hello world! $x = "こんにちは" $ x . = "世界! " ; $x ; //出力 Hello world! ?>
オペレーター | 名前 | 説明する |
---|---|---|
++x | 事前インクリメント | xに1を加えてxを返す |
x++ | ポストインクリメント | x を返し、x に 1 を加算します。 |
-- × | プリデクリメント | x を 1 減算して x を返します |
× -- | 以降減少 | x を返し、x から 1 を減算します。 |
次の例は、インクリメント/デクリメント演算子を使用した結果を示しています。
<?php $x = 10 ; echo ++ $x ; //出力 11 $ y = 10 ; $y ++ //出力 10 $z = 5 ; echo -- $z ; //出力 4 $ i = 5 ; $i --; //出力 5 ?>
比較演算子を使用すると、2 つの値を比較できます。
オペレーター | 名前 | 説明する | 例 |
---|---|---|---|
x == y | 等しい | x が y と等しい場合に true を返します | 5==8 は false を返します |
x === y | 絶対に等しい | x が y に等しく、それらが同じ型である場合に true を返します。 | 5==="5" は false を返します |
x != y | 等しくない | x が y に等しくない場合は true を返します | 5!=8 は true を返します |
x <> y | 等しくない | x が y に等しくない場合は true を返します | 5<>8 は true を返します |
x !== y | 絶対に等しくない | x が y と等しくない場合、または同じ型でない場合は true を返します。 | 5!=="5" は true を返します |
x > y | より大きい | x が y より大きい場合は true を返します | 5>8 は false を返します |
x < y | 未満 | x が y より小さい場合は true を返します | 5<8 は true を返します |
x >= y | 以上 | x が y 以上の場合に true を返します | 5>=8 は false を返します |
x <= y | 以下 | x が y 以下の場合に true を返します | 5<=8 は true を返します |
次の例は、いくつかの比較演算子を使用したさまざまな結果を示しています。
<?php $ x = 100 ; $ y = " 100 " ;" <br> " ; var_dump ( $x === $ y ) ; " <br> " ; var_dump ( $x ! = $y ) ; " <br> " ; var_dump ( $x ! == $y ) ; " <br> " ; $a = 50 ; $ b = 90 ( $ a > $ b ) ; " <br> " ; var_dump ( $a < $ b ) ;
オペレーター | 名前 | 説明する | 例 |
---|---|---|---|
x と y | そして | x と y の両方が true の場合に true を返します | x=6y=3(x < 10 および y > 1) は true を返します |
x または y | または | x と y の少なくとも 1 つが true の場合に true を返します。 | x=6y=3(x==6 または y==5) は true を返します |
x x or y | XOR | x と y のうちの 1 つだけが true の場合、true を返します。 | x=6y=3(x==6 xor y==3) は false を返します |
x && y | そして | x と y の両方が true の場合に true を返します | x=6y=3(x < 10 && y > 1) は true を返します |
x || y | または | x と y の少なくとも 1 つが true の場合に true を返します。 | x=6y=3(x==5 || y==5) は false を返します |
! × | いいえ | x が true でない場合は true を返します | x=6y=3!(x==y) は true を返します |
オペレーター | 名前 | 説明する |
---|---|---|
x + y | 集める | x と y のセット |
x == y | 等しい | x と y が同じキーと値のペアを持つ場合は true を返します。 |
x === y | 平等 | x と y が同じ順序と型で同じキー/値のペアを持っている場合に true を返します。 |
x != y | 等しくない | x が y に等しくない場合は true を返します |
x <> y | 等しくない | x が y に等しくない場合は true を返します |
x !== y | 同一ではない | x が y に等しくない場合は true を返します |
次の例は、いくつかの配列演算子を使用したさまざまな結果を示しています。
<?php $x =配列( " a " => "赤" 、 " b " => "緑" ) ; $ y =配列( " c " => "青" 、 " d " => "黄" ) ; = $x + $y // $x 配列と $y 配列を結合します。 var_dump ( $ z ) ; var_dump ( $ x === $ y ) ; var_dump ( $ x < > $ y ) ; x !== $y ) ? >
もう 1 つの条件演算子は、「?:」 (または 3 項) 演算子です。
(式1) : (式3)
expr1 が TRUE と評価された場合の値は expr2 であり、expr1 が FALSE と評価された場合の値は expr3 です。
PHP 5.3 以降では、三項演算子の中間部分を省略できるようになりました。式 expr1 ?: expr3 は、expr1 が TRUE と評価される場合は expr1 を返し、それ以外の場合は expr3 を返します。
次の例では、$_GET リクエストにユーザー値が含まれていると判断され、含まれている場合は $_GET['user'] が返され、それ以外の場合は何も返されません。
<?php $test = ' Coder チュートリアル' //通常の書き方$username = isset ( $ test ) $test : '誰も' ; $username , PHP_EOL // PHP 5.3+ バージョンの記述方法$username = $test ?: '誰も' ; $ユーザー名、 PHP_EOL ? >
コーダー向けチュートリアル コーダー向けチュートリアル
注: PHP_EOL は改行文字であり、より大きなプラットフォームと互換性があります。
PHP7+ バージョンには追加の NULL 合体演算子??
の例は次のとおりです。
<?php // $_GET['user'] が存在しない場合は 'nobody' を返し、それ以外の場合は $_GET['user'] の値を返します$username = $_GET [ ' user ' ] ?? ' none ' //同様の三項演算子$username = isset ( $_GET [ ' user ' ] ) $ _GET [ ' user ' ] : ' nobody ' ? >
PHP7+ は結合された比較演算子をサポートしています。例は次のとおりです。
<?php //整数型エコー1 <=> 1 ;エコー1 <=> 2 // -1 ;エコー2 <=> 1 // 1 ; //浮動小数点型エコー1 .5 <=> 1 .5 ;エコー1 .5 <=> 2 .5 ;エコー2 .5 <=> 1 .5 ; //弦エコー" a " <=> " a " ;エコー" a " <=> " b " ;エコー" b " <=> " a " ; ?>
次の表に、演算子を優先順位の高い順に示します。同じ行にある演算子は同じ優先順位を持ち、それらを組み合わせる方向によって評価の順序が決まります。
注: 左 = 左から右、右 = 右から左。
綴じ方向 | オペレーター | 追加情報 |
---|---|---|
なし | 新しいクローンを作成する | クローンと新しい |
左 | [ | 配列() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 種類と増減 |
なし | インスタンスの | タイプ |
右 | ! | 論理演算子 |
左 | */% | 算術演算子 |
左 | + – 。 | 算術演算子と文字列演算子 |
左 | << >> | ビット演算子 |
なし | == != === !== <> | 比較演算子 |
左 | & | ビット演算子と参照 |
左 | ^ | ビット演算子 |
左 | | | ビット演算子 |
左 | && | 論理演算子 |
左 | || | 論理演算子 |
左 | ? : | 三項演算子 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 代入演算子 |
左 | そして | 論理演算子 |
左 | クソ | 論理演算子 |
左 | または | 論理演算子 |
左 | 、 | 多くの場所で使用されています |
演算子の優先順位では、or、||、&&、および and はすべて同じ効果を持つ論理演算子ですが、優先順位が異なります。
<?php //優先順位: && > = > および//優先度: || > = > または $ a = 3 ; $ b = $ a ;または$b ; var_dump ( $c ) ; //ここでの $c はブール値 true ではなく、int 値 3 です。 $d = $a $ b ; // $ d はブール値trueです。 ?>
上記の例の出力結果は次のとおりです。
int(3)bool(true)
演算子の優先順位や結合性に依存するのではなく、括弧の組み合わせによって演算の順序を明確に示します。これにより通常はコードの可読性が向上します。
<?php //ブラケット優先操作 $ a = 1 ; $ c = 3 ; $ d = $ b * $ c ; $d ;エコー" n " ; $e = ( $a + $ b ) * $ c ;エコー$ e ; " n " ;
上記の例の出力結果は次のとおりです。
79