PHPのandとorの間違った使い方
php artisan tinker
にて
>>> $t = true; >>> $f = false; >>> $res = $t and $f; return $res; => true /** false かと思ってた。*/ >>> $res = $f and $t; return $res; => false >>> $res = $t or $f; return $res; => true >>> $res = $f or $t; return $res; => false /** true かと思ってた。*/
括弧を使えば、意図通り動作するようになった。
>>> $t = true; >>> $f = false; >>> $res = ($t and $f); return $res; => false >>> $res = ($f and $t); return $res; => false >>> $res = ($t or $f); return $res; => true >>> $res = ($f or $t); return $res; => true
&&
と||
でもやってみた
>>> $t = true; $f = false; $res = $t && $f; return $res; => false >>> $t = true; $f = false; $res = $f && $t; return $res; => false >>> $t = true; $f = false; $res = $t || $f; return $res; => true >>> $t = true; $f = false; $res = $f || $t; return $res; => true >>> $t = true; $f = false; $res = ($t && $f); return $res; => false >>> $t = true; $f = false; $res = ($f && $t); return $res; => false >>> $t = true; $f = false; $res = ($t || $f); return $res; => true >>> $t = true; $f = false; $res = ($f || $t); return $res; => true
こっちは括弧の有無に関わらず意図通りの結果になった。
括弧つけたほうが行儀が良さそうだね。