0

コード:

  $fn0 ='Joe';
  $sn = 'Bloggs';
  $fn1 = 'Joseph';
  if (  (!strcasecmp($fn0, $first_name))
        ||(!strcasecmp($fn1, $first_name))
        &&(!strcasecmp($sn, $last_name))
      ){
        echo('<h3>Hello Joe Bloggs!</h3>');
        }

完璧に動作します。

しかし、なぜ?

If NOT (fn0) OR NOT (fn1) AND ALSO NOT (sn) THEN PRINT "Hello Joe Bloggs"

確かに、Joe Bloggs 以外のすべてに対して「hello Joe Bloggs」と表示されるはずですが、そうではありません: 上記のメッセージが表示されます iff ($first_name == "joe" || "joseph") && $last_name == 「ブログ」。

誰でもこれを解読できますか?

4

2 に答える 2

1

あなたの括弧を見てください

if ( ( !strcasecmp($fn0, $first_name) || !strcasecmp($fn1, $first_name) )
    && ( !strcasecmp($sn, $last_name) ) ) {
...
}

||間違いはとのロジック&&です。最初のチェックが true の場合、残りは無視されます

于 2012-12-30T13:42:20.390 に答える
0

最初の比較結果が TRUE になった後は、"or" 条件は必要ありません。もちろん、どこかに $first_name の定義があると仮定する必要があります...

于 2012-12-30T13:42:14.313 に答える