まぁ結論からいうと「演算子の優先順位」の問題なんだけど。
できれば、可読性の観点からも「括弧付けようよ」とか思う。加えて「スペースの位置がおかしい」。
幾分もわっと、例題。
前提として
$bool = booleanな値
$s = stringな値('0'または'1'のみ)
ってのがあるです。
んで、コード。
$flg = (!$bool && $s==""?"0":"1");
色々デバッグしてたのですが。ぱっと見、優先順位的に
$flg = ( (!$bool) && ($s==""?"0":"1"));
って見えるので、色々と悩んでいたのですが。
演算子の優先順位的に、上述って
$flg = ( (!$bool && $s=="") ? "0" : "1");
だったんですねぇ。
ちなみに、&&をandに置き換えると、既存コードだと「結果が変わる」という(笑
まぁこの辺は、突き詰めると「好み」の問題もあるかとは思うのですが。
個人的には「優先順位を暗黙のうちに使うコード」ってのは、あまり、お好まないの感じですねぇ。
ある意味興味深かったので、memo。