2021/07/07
PHP 実践で使用する変数への代入
大した技術ではありませんが、確実に使用する変数への代入。
その中でも実践で使用する変数への代入方法をご紹介致します!
三項演算子を使った条件代入
まずは一般的なifを使った方法です。
こちらのメリットはifは誰でも理解する事ができ、誰が見ても分かりやすい所です。
デメリットとしては、複数行になりがちな所です。
if ( $a === 100 ) {
$value = true;
} else {
$value = false;
}
では、「三項演算子」を使った方法ではどうでしょうか?
$value = $a === 100? true : false;
先程のデメリットがなくなり、1行で記述が行えます。
初めて見る方の為に、簡単に説明致します。
「?」の前に条件を記述します。その条件が一致した時に変数に入れる値を「?」の後に記述します。
一致しなかった時に変数入れる値は「:」の後に記述します。
ちなみに、この三項演算子は応用的な書き方が出来ます。
$a = 100;
$value = $a? : 50;
// $value = 100
$a = 0;
$value = $a? : 50;
// $value = 50
先ほどまでtrueが記述されていた部分が何も記述がなくなっています。
この書き方をすると、条件に一致($aに値が存在)した場合に$aの値をそのまま返します。
逆に条件に一致(値が存在)しない場合は、指定した値を返します。
値がない場合のデフォルト値を設定できる、config系で非常に役に立ちます。
さらに、PHP5系でも動く為、昔ながらのバージョンにも対応しているのでオススメです。
NULL合体演算子 PHP7以降
三項演算子の応用と似た様な内容ではありますが、PHP7〜から使える方法です。
$a = 100;
$value = $a ?? 50;
// $value = 100
三項演算子の応用と非常に似ているのですが、使う時に注意が必要です。
$aに値があれば、$aの値をそのまま返します。
ここまでは一緒です。
「値があれば」と記述していますが正確には下記の条件に触れていなければとなります。
- nullの場合
- 変数自体が存在しない
その為、$aに「0」や「false」が入っていた場合は、その値がそのまま返ってくるので注意です。
その分、メリットもあります。
三項演算子の方では、$a(変数自体)が存在しない場合にエラー(Notice: Undefined variable)が出てしまいます。
しかし、NULL合体演算子の場合であればエラーが表示されません。
使える場面、使えない場面があるので状況に合わせた書き方が求められますね。
以上になります。
どういった場面で使える使えないの判断が難しいので、どちらでも良いので使って、どちらが向いていたか判断して貰うのが良いかと思います。