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>');
        }

完美运行。

但为什么?

如果不是 (fn0) 或不是 (fn1) 也不是 (sn),则打印“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) ) ) {
...
}

错误在于||and的逻辑&&。如果第一个检查为真,其余的将被忽略

于 2012-12-30T13:42:20.390 回答
0

在第一次比较结果为 TRUE 后,不需要“或”条件。当然,我们必须假设某处 $first_name 有一些定义......

于 2012-12-30T13:42:14.313 回答