演算子

演算子

 状態:  閲覧数:4,832  投稿日:2010-04-26  更新日:  
各演算子はそれぞれオペランド(被演算子/演算が作用する対象のこと)数が決まっていて、その数によって、呼称が異なる。
オペランドが1つの場合は「単項演算子」、2つの場合は「2項演算子」、3つの場合は「3項演算子」と呼ぶ。なお、「3項演算子」は、条件演算子のみである。



1.代数演算子

2.文字列演算子

3.代入演算子

4.加算子/減算子

5.配列演算子

6.比較演算子

7.条件演算子

8.論理演算子

9.エラー制御演算子

10.ビット演算子

11.実行演算子



2.文字列演算子 - 「文字列の連結」を行う演算子
記述 名前 処理・返り値
$air .= "port" 結合代入演算子 「$air = $air ."port"」の省略形


3.代入演算子 - 「左辺の変数に右辺の値を代入し、代入した値を返す」という処理をする演算子
記述 名前 処理・返り値
$air -= 10など 複合演算子 「$air = $air -10」の省略形


4.加算子/減算子 - 被演算子の値を「1」だけ増減(インクリメント/デクリメント)させる演算子
記述 名前 処理・返り値
++$a 前置加算子 「$a」に「1」を足して、 その結果を返す
$a++ 後置加算子 「$a」の値を返し、「$a」 に「1」を足す
--$a 前置減算子 「$a」から「1」を引い て、その結果を返す
$a-- 後置減算子 「$a」の値を返し、「$a」 から「1」を引く


6.比較演算子
記述 比較 返り値
$a == $b 等しい 結果に応じた真偽値
$a === $b 等しい(型も同じ) 結果に応じた真偽値
$a != $b 等しくない 結果に応じた真偽値
$a <> $b 等しくない(「!=」と同じ意味) 結果に応じた真偽値
$a !== $b 等しくない、値は等しくても型が違う 結果に応じた真偽値
$a < $b より少ない 結果に応じた真偽値
$a > $b より多い 結果に応じた真偽値
$a <= $b より少ないか等しい 結果に応じた真偽値
$a => $b より多いか等しい 結果に応じた真偽値


$a = 5;
$b = "5";//「変数$a」と「変数$b」は、値は同じだが、型は異なる

if($a === $b){
echo '$a === $b';
}else if($a == $b){
echo '$a == $b';
}else{
echo '$a != $b';
}

echo "
";

if("AIR" == 0){
echo '"AIR" == 0';//文字列の「"AIR"」と数値の「0」は、“等価である”。詳細については、techblog.ecstudio.jp/tech-tips/php-string-compare.html要参照
}else{
echo '"AIR" != 0';
}

▼結果

  /demo/operator_symbol1.html






7.条件演算子

「条件演算子」は、「一番左側から順に、第一オペランドが真なら第二オペランドの、偽なら第三オペランドの値を返す」という処理を行う、唯一の3項演算子。
記述 処理・返り値
$a ? $b : $c 「$a」が「真」なら「$b」 を、「偽」なら「$c」を返す



8.論理演算子

優先順位が高い順 - 「&&」と「||」、「=」や「==」、「and」と「or」
記述 名前 処理・返り値
$a and $b 論理積 両オペランドが「真」なら「true」 を返す
$a or $b 論理和 いずれかのオペランドが「真」なら「true」 を返す
$a xor $b 排他的論理和 両オペランドの真偽値が異なれば「true」 を返す
!$a 否定 オペランドが「偽」なら「true」 を返す
$a && $b 論理積 両オペランドが「真」なら「true」 を返す
$a || $b 論理和 いずれかのオペランドが「真」なら「true」 を返す
「論理積」と「論理和」の演算子が2通りあるのは、演算の際の優先順位(後で解説)が異なるため。
「&&」、「||」は、「and」、「or」よりも優先順位が高い

$a = "red";//『「変数$a」に「"red"」をセット
$b = "";//「変数$b」に「""」をセット

if( ($a == "red") and ($b = "blue") ){//$a == "red"」の真偽が「真」と評価され、次に「$b = "blue"」が評価される(「変数$b」に「"blue"」が代入される)
echo "AIR1"."
";
}

echo '$a : '.$a."
";
echo '$b : '.$b."
";

echo "
";

$a = "red";
$b = "";

if( ($a == "red") or ($b = "blue") ){//「$a == "red"」の真偽が「真」と評価され、この時点で「真」が確定され次の真偽判定の必要がなくなり、「$b = "blue"」は評価されない
echo "AIR2"."
";
}

echo '$a : '.$a."
";
echo '$b : '.$b."
";

echo "
";

$a = "red";
$b = "";

if( !$b ){//「$b」の真偽が「偽」と評価され(空文字列なので)、その「否定」で「真」と判定される
$b = "blue";//「$b = "blue"」は評価される
}

echo '$a : '.$a."
";
echo '$b : '.$b."
";

echo "
";

$a = "red";
$b = "";

if( ($a == "red") xor ($b == "") ){//「$a == "red"」と「$b == ""」が両方とも「真」であるため、「偽」と判定される。
$b = "yelow";//「$b = "yellow"」は評価されない
}

echo '$a : '.$a."
";
echo '$b : '.$b;

echo "
";

$a = "red";
$b = "";

if( ($a == "red") xor ($b == "green") ){//「$a == "red"」が真、「$b == ""」が偽であるため、「偽」と判定される
$b = "orange";//「$b = "orange"」は評価される
}

echo '$a : '.$a."
";
echo '$b : '.$b;

▼結果

  /demo/operator_symbol2.html





9.エラー制御演算子

「@(アットマーク)」は、「何らかの問題で生成されたエラーメッセージを無視する(出力を行わない)」という働きを持った演算子。「式(値を持つもので、「変数」や「定数」、そして「関数」)」でのみ動作する。また、文法ミスによるエラーメッセージは制御出来ない。
記述 名前 処理
@func()、@$hode エラー制御演算子 生 成されたエラーメッセージを出力しない

@func();//エラーが出力されない。本来であれば、Fatal error: Call to undefined function **() ○○ on line 6となるはずが…



結合時の評価と優先順位

コメント投稿(ログインが必要)



週間人気ページランキング / 4-11 → 4-17
順位 ページタイトル抜粋 アクセス数
1 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 13
2 ブラウザを閉じたらセッションデータはどうなるの? | セッション 12
3 コード例 … 「例外処理」はネストすることができる 8
4 curl で Cookie を使用する 6
5 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 4
5 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ○○.php on line △△ | Warning(エラーメッセージ) 4
6 インターフェイス | クラスとオブジェクト 3
6 php-devel とは? 3
7 or(||) | 演算子 2
7 array_map | 配列 2
7 ブラウザを閉じたらセッションデータはどうなるの? | セッション 2
7 ガベージコレクション | 機能 2
7 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined | Fatal error(エラーメッセージ) 2
7 set_error_handler | 例外処理(制御構造) 2
7 PHPで定数を定義する方法は2種類ある / 配列定数の定義 2
7 型の種類 | 型 2
7 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 2
7 エラー出力レベル設定 | エラー設定(エラーメッセージ) 2
7 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 2
7 Fatal error: Using $this when not in object context in /○○.php on line △△ | Fatal error(エラーメッセージ) 2
2024/4/18 1:01 更新