演算子

演算子

 状態:  閲覧数:5,051  投稿日: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となるはずが…



結合時の評価と優先順位

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



週間人気ページランキング / 1-30 → 2-5
順位 ページタイトル抜粋 アクセス数
1 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 10
2 ブラウザを閉じたらセッションデータはどうなるの? | セッション 9
3 curl で Cookie を使用する 4
3 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 4
3 PHPで定数を定義する方法は2種類ある / 配列定数の定義 4
4 コード例 … 「例外処理」はネストすることができる 3
4 Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden | Warning(エラーメッセージ) 3
4 http_build_queryとは? / 構文 /パラメータ 3
4 Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | エラーメッセージ 3
5 Fatal error: Cannot redeclare 関数名() (previously declared in ファイル名:○○) in ファイル名 | Fatal error(エラーメッセージ) 2
5 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'データベースユーザー名'@'localhost' (using password: YES)' | phpMyAdmin(データベース関連) 2
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined | Fatal error(エラーメッセージ) 2
5 new clone違い | 演算子 2
5 オブジェクト関係マッピング | データベース関連 2
5 array_filter | 配列 2
6 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 1
6 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 1
6 セッション単位 | セッション 1
6 htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string | セキュリティ 1
6 dirname() / (__FILE__ ) / basename( dirname( __FILE__ ) ); | 関数 1
2025/2/6 1:02 更新