Developer

2020.11.30
Lv1

【PHP基礎】三項演算子、エラー制御演算子、実行演算子

■三項演算子とは

条件式の真偽によって、対応する式の値を出力する演算子です。
構文は 条件式 ? trueの場合の式 : falseの場合の式 です。
条件式、trueの場合の式、falseの場合の式の3つの項から成るので三項演算子と呼ばれています。
使用例を見てみましょう。

<?php
$num = 10;
echo $num > 5 ? "5より大きい" : "5以下"; // 10 > 5 で条件式がtrueなので「5より大きい」と表示
?>;

三項演算子は全てif-else文で書き換えることができます。
上記の例を書き換えると以下のようになります。

<?php
$num = 10;
if($num > 5) { // 三項演算子の条件式の部分
    echo "5より大きい"; // 三項演算子の「trueの場合の式」部分
} else {
    echo "5以下"; // 三項演算子の「falseの場合の式」の部分
}
?>

三項演算子は簡単な条件分岐をスッキリと記述できるところがメリットです。
条件が複雑だったり、式が複雑だとプログラムが読みにくくなってしまうため、
読みやすい範囲で使うようにしましょう。

■エラー制御演算子とは

アット「@」で表され、エラーの出力を制御する事のできる演算子です。
PHPの式の前につけるとその式で発生したエラーは無視され出力されないようにできます。

PHPでは親切にエラーメッセージを出力しますが、この出力が逆に邪魔になる時があるため、
そのような時に@演算子でエラーの制御をすると便利です。

@演算子は変数、関数、include、定数などの式の前には付けることができますが、
クラスや関数の定義、ifやforeachなどの条件構造の前につけることができません。

<?php
$my_file = @file('non_existent_file');
//
// 上の例は存在しないファイルを読み込もうとしているが
// エラー制御演算子が関数の前についているためエラーが出力されません
// ※file関数はファイル全体を読み込んで配列に格納する関数です
//

$value = @$_GET["key"];
// 上の例はGETリクエストから存在しない値を取り出そうとしているが、
// エラー制御演算子が変数の前についているためエラーが出力されません

?>

■実行演算子とは

バッククォート(`)で囲んだ文字列をシェルコマンドとして実行する演算子です。
同じ働きをする関数としてshell_exec関数があります。
シングルクォート(‘)とバッククォートは(`)は似ていますが別物なので気をつけましょう。
※「dir /b」はカレントフォルダは以下のファイルをリスト表示するコマンドです

<?php
$list=`dir /b`; // 「dir /b」コマンドの結果を文字列として$listに代入
var_dump($list);
?>

PHP基礎 連載目次リンク

PHP基礎 連載目次