|
現: 2013-01-09 (水) 11:57:41 nao-pon |
| + | #navi |
| + | RIGHT:&rsslink(../); |
| + | #boxdate |
| | | |
| + | * [PHP] if文の条件式内での代入・演算子優先順位でハマる [#c8be5bda] |
| + | RIGHT:&tag(PHP,プログラミング,覚書); |
| + | |
| + | 私は、PHP の if文の条件式の中で代入を行うことが多いです。 |
| + | |
| + | 例えば、 |
| + | |
| + | #code(php){{ |
| + | if ($a = 'hoge') { |
| + | var_dump($a); |
| + | } |
| + | }} |
| + | |
| + | この結果は |
| + | |
| + | string(4) "hoge" |
| + | |
| + | です。 |
| + | |
| + | 条件を増やしたくて次のようにしました。上記と同じ結果になることを期待しています。 |
| + | |
| + | #code(php){{ |
| + | if ($a = false || $a = 'hoge') { |
| + | var_dump($a); |
| + | } |
| + | }} |
| + | |
| + | この結果は |
| + | |
| + | bool(true) |
| + | |
| + | となってしまいました。うほ!! |
| + | |
| + | なんということでしょう。 |
| + | |
| + | これにハマってしまいました。 |
| + | |
| + | 正解は |
| + | |
| + | #code(php){{ |
| + | if ($a = false or $a = 'hoge') { |
| + | var_dump($a); |
| + | } |
| + | }} |
| + | |
| + | で、この結果は正しく |
| + | |
| + | string(4) "hoge" |
| + | |
| + | になりました。 |
| + | |
| + | 詳しいことはよく分からないけど、[[PHP の演算子の優先順位:http://www.php.net/manual/ja/language.operators.precedence.php]]によるものらしいです。 |
| + | |
| + | 演算子の優先順位が "||" > "=" > "or" ということだそうです。 |
| + | |
| + | 「これからも、気をつけないと」ということで、書き留めておきました。 |
| + | |
| + | :参考| |
| + | [[PHPのif文の条件式での代入ではまった件 - kanonjiの日記:http://d.hatena.ne.jp/kanonji/20090522/1242950364]] |
| + | |
| + | RIGHT:&font(90%){&page_comments;}; |
| + | #navi |
- nao-pon/blog/2013-01-09 のバックアップ差分(No. All)
Counter: 277,
today: 1,
yesterday: 0