PHPの基本的な質問ですが、私の理解は間違っていますか?
<br />$c = 10;<br />if ((($a > 0) + ($b > 0) + ($c > 0) + ($d> 0) != 1)) {<br /> message('成功');<br />}else<br />{<br /> message('失败')<br />}<br />
ログイン後にコピー
すみません、$c は 10 です。if ステートメントで失敗が出力されるのはなぜですか? ?どのように理解すればよいでしょうか? a、b、d はすべて空です ($c>0) c が返されると、
c は 10 になります。 =1
出力は成功するはずではないでしょうか?
私の理解が間違っていたと思いますので、アドバイスをお願いします。
------解決策-----$c = 10;<br />if (((($a > 0) + ($b > 0) + ($c > 0) + ($d> 0)) != 1)) {<br /> message('成功');<br />}else<br />{<br /> message('失败')<br />}
ログイン後にコピー
- - ----解決策------------------error_reporting(E_ALL ^ E_NOTICE);<br />$c = 10;<br />echo ($a > 0) + ($b > 0) + ($c > 0) + ($d> 0);
ログイン後にコピー
出力 1
So if ((($a > 0) ($b > 0) ($c > 0) ($d> 0) != 1)) { Not true (1 != 1)
したがって、else 分岐
-- ---解決策--------------------$c = 10;
if ((($a > 0) ( $b > 0) ($c > 0) ($d> 0) != 1)) {
$a は未定義であるため、($a > 0) は false を返し、 int型は0
$bは未定義なので、($b > 0)はfalseを返し、int型に変換すると0
$c=10なので、(10 > 0)はtrueを返し、intに変換されます。型は1です
$dは未定義なので、($d > 0)はfalseを返し、int型0に変換されます
文を書き換えると、
if((0 0 1 0)!=1){