ページへ戻る

− Links

 印刷 

[PHP] if文の条件式内での代入・演算子優先順位でハマる :: XOOPS マニア

UsersWiki:nao-pon/blog/2013-01-09


RSS of nao-pon/blog[5]
2013 1月 9 (水)
 

[PHP] if文の条件式内での代入・演算子優先順位でハマる anchor.png[6]

Tag: PHP[7] プログラミング[8] 覚書[9]

私は、PHP の if文の条件式の中で代入を行うことが多いです。

例えば、

1
2
3
if ($a = 'hoge') {
    var_dump($a);
}

この結果は

string(4) "hoge"

です。

条件を増やしたくて次のようにしました。上記と同じ結果になることを期待しています。

1
2
3
if ($a = false || $a = 'hoge') {
    var_dump($a);
}

この結果は

bool(true)

となってしまいました。うほ!!

なんということでしょう。

これにハマってしまいました。

正解は

1
2
3
if ($a = false or $a = 'hoge') {
    var_dump($a);
}

で、この結果は正しく

string(4) "hoge"

になりました。

詳しいことはよく分からないけど、PHP の演算子の優先順位[10]によるものらしいです。

演算子の優先順位が "||" > "=" > "or" ということだそうです。

「これからも、気をつけないと」ということで、書き留めておきました。

参考
PHPのif文の条件式での代入ではまった件 - kanonjiの日記[11]


Last-modified: 2013-01-09 (水) 11:57:41 (JST) (4123d) by nao-pon