php:复合if语句(被忽略)

php:复合if语句(被忽略),php,if-statement,Php,If Statement,如果子域不是“mobile”并且文件名不是“design”或“photo”,那么我想回显一些东西,所以回显if(不是“mobile”而不是“design”)或(不是“mobile”而不是“photo”) 我写的代码是: <?php if ( ($subdomain != mobile) && ($currentFileName != design || $currentFileName != photo) ) { echo ('code')

如果子域不是“mobile”并且文件名不是“design”或“photo”,那么我想回显一些东西,所以回显if(不是“mobile”而不是“design”)或(不是“mobile”而不是“photo”)

我写的代码是:

<?php
    if ( ($subdomain != mobile) && ($currentFileName != design || $currentFileName != photo) ) {
        echo ('code')
    }
?>
新的问题是,子域“mobile”中的所有内容现在都被捕获,因此其中没有任何页面从echo获取“代码”(即使不是“设计”或“照片”)

我最近尝试的代码是:

if ( ($subdomain != 'test' && $currentFileName != 'design') && ($subdomain!='test' && $currentFileName != 'photo') ) {
    echo ('ajax code');
}

但是仍然没有骰子:(

我知道应该是:

<?php
    if ($subdomain != 'mobile' && $currentFileName != 'design' && $currentFileName != 'photo') {
        echo ('code');
    }
?>

因为'or'使其与任何文件名匹配,包括'design'和'photo'


很好,加了引号:)

如果要比较字符串,应该引用它们。否则,它认为它们是常量

尝试:


如果仍然无法按预期工作,请调试
$subdomain
$currentFileName
以确保它们符合您的想法


注意:根据注释,您的逻辑似乎也不正确。

|
替换为
&&
-应该有“和”

if ( ($subdomain != 'mobile') && ($currentFileName != 'design' && $currentFileName != 'photo') ) {
        echo ('code');
    }

你的逻辑有缺陷。您最可能想要的是
&&
而不是
|
。如果你想一想这句话,它就会变得显而易见。假设以下场景:$currentFileName是“设计”。它将通过,因为它不是“照片”。如果我们使$currentFileName等于'photo',它仍然会通过,因为它不等于'design'

编辑:
比较字符串时请使用引号。PHP将首先尝试查找具有该名称的常量,然后假定它是字符串,因为找不到。

此外,
echo
之后的分号。语句的| |部分将失败。你是说某些东西不能同时是两个不同的东西,这永远是正确的。我认为“或”不正确,任何文件名都不等于其中一个,包括“设计”和“照片”。@morgar同意。但我无法与用户的逻辑对话:)我只是在上面添加了这个,但是:$子域解析为“test”或“m”(mobile)$currentFileName解析为“设计”或“照片”或“关于”(它是一个basename-.php),无需担心。听起来你已经解决了上面的问题。我没有调整你的逻辑,我只是加了“;”在echo line.btw中,我最初有引号,但后来我在第63行(此处有引号)出现语法分析错误,说“‘’’出乎意料。@jacob:在别人看你滑稽之前,确保先去掉括号;“《手机》中的其他页面没有得到“代码”“从回声中。我想现在发生的是它正在进入$subdomain!='“mobile”并停止,因为子域是“mobile”,但页面不是“design”或“photo”(它是“about”)。我试着像这样把这两个条件放在一起:if($subdomain!='mobile'&&$currentFileName!='design')&($subdomain!='mobile'&&&$currentFileName!='photo')){echo('ajax code');}但这并不能使ajax代码在subdomain=“mobile”上显示在那些不是“design”或“photo”的页面上:(@Jacob Try
if(!($subdomain==“mobile”&($currentFileName==“design”| |$currentFileName==“photo”))
ahhh!你真是个天才。这是我在shell脚本中应该做的,但我不知道你可以用php做“如果没有”的事。哦,谢谢!!
<?php
if ( ($subdomain != 'mobile') && ($currentFileName != 'design' || $currentFileName != 'photo') ) {
  echo 'code';
}
?>
if ( ($subdomain != 'mobile') && ($currentFileName != 'design' && $currentFileName != 'photo') ) {
        echo ('code');
    }