PHP 基礎講座の備忘録(変数展開、三項演算 )
さて今回からPHPの基礎編としまして
PHPの基礎構文からPHPによる簡単なアプリケーションの作成までの口座を書き記し、自身の基盤となるように残しておきます
私自身WordPressをさわっていて
WordPressにてわからないことがあっても、ググれば基本的な機能はほぼほぼ実装できるのですがもっと高度な内容であったりすると根本的なエビデンスの知識は必須だと考えました。
文字列と変数の連結(展開)について
for ($i=0; $i < 10; $i++) {
$count = (string) $i;
echo $count.'回目の繰り返しです。';
echo '<br>';
}
上記のような書き方で文字列と変数を繋げられるのですが
echo "{$count}回目の繰り返しです。";
のように””ダブルクォーテーションで囲っているときのみ{}で囲った変数を展開することが出来ます
$count = (string) $i;の部分ですがしっかりとキャスト演算をすることでエラー回避をしているのですが
PHPには暗黙の型変換というものがありこちらのおかげで自動的に整数に変換されるためこのときばかりは記述しなくてもいいかと思います
for ($i=1; $i < 10; $i++) {
for ($j=1; $j < 10; $j++) {
$x = $i * $j;
echo "{$i} x {$j} = {$x} です";
echo '<br>';
}
}
と、上記のような記述法で九九を出力できるのですが
この記法だと視覚的にも見やすいと思います
HTMLの埋込例としてこれをテーブルにしてみましょう
<table border="1">
<?php
for ($i=1; $i < 10; $i++) {
echo '<tr>';
for ($j=1; $j < 10; $j++) {
$x = $i * $j;
echo "<td>{$x}</td>";
}
echo '</tr>';
} ?>
</table>
こんな感じですね。
三項演算とは?記述法は?
ここからは三項演算についての解説です
実際よく目にする記述法ですが理解が浅いため基礎を抑えでおきます
三項演算子とは
一つの式で3っの式を使用するための比較演算です
書き方は、
$int1 = 100;
$int2 = 200;
$ans = $int1 < $int2 ? 'int1はint2より大きい' : 'int1はint2より小さい';
echo $ans;
これで出力結果は「int1はint2より小さい」となります
まずはじめに条件式を書きます
$int1 < $int2の部分です
そして?の後にtrueの時の式:falseの時の式と続けて書きます
ifelse構文のようですが、式であるため返り値を変数に入れるかretunしなければ何も起きません
またあくまで真または偽の式を書くのであって
返り値がある式を書きます
したがって返り値がないechoなどをさせようとするとエラーになります
ifelse構文と同じなのは片方の変数が定義されていなければ値がある方がtrueになります
もう一つ例をあげます、
$you = 'チョキ';
$game = ($you == ' グー' ? 'あいこ!' :
($you == 'パー' ? 'あなたの勝ち!' : 'あなたの負け!'));
echo "この勝負は{$you}を出した{$game}";
この例での実行結果は
「この勝負はチョキを出したあなたの負け!」となります
あくまでコンピュータがグーを出す場合の条件式となります。
エルビス演算子
エルビス演算子は三項演算子を簡略化したもので書き方は、
条件式(真の式)?:偽の式 で書きます
つまり条件式と真の式が同じ時に、先の三項演算子を省略した書き方です
例文としては
$int1 = 100;
$int2 = 200;
$ans = $int1 < $int2 ?: 'int1はint2より大きい';
echo $ans;
この例の実行結果はtrueとなり変数$ansには「1」が代入されます。
もう一つ例文で
$int2 = '';
$ans = $int2 ?: 'int2に値がない';
こちらの実行結果はfalseとなり「int2に値がない」の式が返ります
ちなみにそもそも$int2が定義されていない場合も
ちゃんとfalseが返ってくれます
エルビス演算子は値がNULL型の場合や定義すらされていない(undefined)の時によく使用されるそうです
NULL合体演算子
NULL合体演算子は
条件式の結果がNULLかそうでないかを返してくれます
基礎構文は、
条件式または$変数 ?? 真の式;
となっていて条件式、または変数がNULLの場合真の式が返ります
そしてNULLでなかった場合は条件式か変数がそのまま返ります
こちらもよく見かける演算子なので覚えておきます
この三項演算は上手に使用すると記述量を減らすように書くことができるようですが、、、
見ずらい、、、、、、
コメントをお待ちしております