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

こっちは括弧の有無に関わらず意図通りの結果になった。
括弧つけたほうが行儀が良さそうだね。