代码:
$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”| |“约瑟夫”)&amp;&amp; $ last_name ==“bloggs”。
有人可以解读这个吗?
答案 0 :(得分:1)
看看你的括号
if ( ( !strcasecmp($fn0, $first_name) || !strcasecmp($fn1, $first_name) )
&& ( !strcasecmp($sn, $last_name) ) ) {
...
}
错误是||
和&&
的逻辑。如果第一次检查为真,则其余部分将被忽略
答案 1 :(得分:0)
在第一次比较结果为TRUE后,不需要“或”条件。当然,我们必须假设某个地方有$ first_name的定义......