if-else文の制御構造の代替


Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/webstyle/php-fan.org/public_html/wp-content/plugins/wp-syntax/wp-syntax.php on line 383

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/webstyle/php-fan.org/public_html/wp-content/plugins/wp-syntax/wp-syntax.php on line 383

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/webstyle/php-fan.org/public_html/wp-content/plugins/wp-syntax/wp-syntax.php on line 383

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/webstyle/php-fan.org/public_html/wp-content/plugins/wp-syntax/wp-syntax.php on line 383

今回phpのif文についての覚書です。今更ですが書き方でエラーになってしまったので記しておきます。
すぐに分かったんですが、同じ文を書いていてもエラーになるってあんまりないので残しておきます。

ワードプレスなどではifやfor、while、foreachなどはビューファイル用の書き方で記述しています。
大カッコ{}の代わりに:(コロン)を使うやり方です。


スポンサーリンク


これを使うことには問題がないのです。

しかし、下記2つの文で下の文の方はエラーが出るんです。なぜか。。。

一般的なif文

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$a = '10';
$b = '15';
if ($a == $b) {
	echo '同じだ';
} else if ($a > $b) {
	echo 'bより大きい';
} else if ($a < $b) {
	echo 'aより大きい';
} else {
	echo '上記以外';
}		
?>

この書き方は一般的ですね。これは普通に動作します。下の文は:(コロン)を使った文です。

ビューファイル代替用if文

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$a = '10';
$b = '15';
if ($a == $b):?>
<p>同じだ</p>
<?php else if ($a > $b):?>
<p>bより大きい</p>
<?php else if ($a < $b):?>
<p>aより大きい</p>
<?php else:?>
<p>上記以外</p>
<?php endif;?>

この文はエラーになります。

どこが悪いのか?

else ifの間が開いていてはダメみたい。

elseifならOKです。

なんでだろう。。。と思って調べてみたらマニュアルに書いてありました。
elseif

それから実は大カッコ{}なしでも動きます。
ですが複雑になるとわからなくなるし、エラーが出てくる場合があるのでやめましょう。

ショートコード用if文

1
2
3
4
if ($a == $b) 
	echo '同じだ!';
 else 
	echo '違う!';

こんな感です。これに更にelseifなんかが追加されると見難くてわかりづらくなるのでやめましょう。

それから上記のような簡単な分岐文なら三項演算子で使うことも可能です。
使い方: (条件文) ? true : false

三項演算子

1
2
3
4
5
6
7
<?php
$a = '10';
$b = '15';
 
echo ($a == $b) ? '同じ' : '違う';
 
?>

以上if文についてでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です