知らなかったこと

  • if文の中で変数定義ができること。
  • if ( !$var = 'Well done' ) {}のように、否定の論理演算子がついている場合、条件式に当てはまらない場合に変数定義がおこなわれる

検証

◯テスト1

<?php
// Test1
if(!$var = 'Well done!') {
    echo 'Hello World!';
}
echo $var;

結果は 「Well done!」となります。

◯テスト2

<?php
// Test2
$test = 'Good morning!';
if(!$test = 'Good morning!') {
    echo 'Oh my goodness!';
} elseif($test = 'HELLO!') {
    echo 'Are you serious?';
}

echo $test;

結果は「Are you serious?」と「HELLO!」の二つが出力されます。

※実際の実行結果はこちら(paiza.ioが開きます。)で確認できます。

なんだこの挙動は

$test に格納された値の動きとしては以下のようになると思います。

Good morning!

Good morning!(最初のif文の条件に合致しないため、Good morning!が代入される)

HELLO!elseifの条件文の中で$testHELLO!が代入される)

IF文の意味とは

果たしてこんな条件分岐文が実際の現場で書かれたりするのかはわからないが、

先述のif文のように条件文の中で変数定義をすると、
元々の変数の中身が何であっても確実にif文のいずれかの結果が出力されることになる。

※そもそもこのエントリー自体、PHPの初心者向け本を演習中に生じた疑問がきっかけなのですが、条件分岐文の中で変数定義をすると、予期せぬエラーが起きたりするのかなあと思いました。

今後の自分の方針として

初心者にとって分かりづらい文は書きたくないので、
if文中に変数定義はしないでおきます。。。

参考

・PHPしっかり入門教室 使える力が身につく、仕組みからわかる。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.