如果子域不是“移动”并且文件名不是“设计”或“照片”,我想回应一些东西,所以echo if(不是“mobile”而不是“design”)或(不是“mobile”)而不是“照片”)。
我写的代码是:
<?php
if ( ($subdomain != mobile) && ($currentFileName != design || $currentFileName != photo) ) {
echo ('code')
}
?>
但它不喜欢复合语句。如果我只是做($subdomain!=mobile)
它有效;如果我只是做($currentFileName!=design)
它有效;如果我只是做($currentFileName!=photo)
它的确有效......
上面的代码不会导致错误......它只是没有做任何事情。
有没有一种特殊的方法来复合/分组我刚才没有得到的陈述?我觉得这应该不难(而且我用PHP做了更复杂的事情,没有这么多麻烦......)。 我在此之后对我的陈述进行了建模:http://www.php.net/manual/en/control-structures.if.php#101724
谢谢!
编辑: 供参考:
$subdomain = implode(array_slice(array_reverse(explode('.', $baseURL)),2)); //resolves to "test"
$basename = basename($_SERVER['REQUEST_URI']); //resolves to "design.php"
$currentFileName = basename($basename, ".php"); //resolves to "design"
新问题是子域名“mobile”中的所有内容现在都被捕获,因此其中的任何页面都没有从echo获取“代码”(即使不是'design'或'photo')。
我尝试过的最新代码是:
if ( ($subdomain != 'test' && $currentFileName != 'design') && ($subdomain!='test' && $currentFileName != 'photo') ) {
echo ('ajax code');
}
但仍然没有骰子:(
答案 0 :(得分:5)
你的逻辑存在缺陷。您最有可能希望&&
不是||
。如果你仔细考虑一下这句话就会显而易见。让我们假设以下场景:$ currentFileName是'design'。它会通过,因为它不是'照片'。如果我们将$ currentFileName设为'photo',它仍然会通过,因为它不等于'design'。
编辑: 并且在比较字符串时请使用引号。 PHP将首先尝试使用该名称查找常量,然后假设它是一个字符串,因为它找不到。
答案 1 :(得分:1)
将||
替换为&&
- 应该有'AND'
if ( ($subdomain != 'mobile') && ($currentFileName != 'design' && $currentFileName != 'photo') ) {
echo ('code');
}
答案 2 :(得分:0)
我理解应该是:
<?php
if ($subdomain != 'mobile' && $currentFileName != 'design' && $currentFileName != 'photo') {
echo ('code');
}
?>
因为'或'使其匹配任何文件名,包括'design'和'photo'。
好点,引言补充说:)
答案 3 :(得分:0)
如果您要比较字符串,则应引用它们。否则,它认为它们是常数。
尝试:
<?php
if ( ($subdomain != 'mobile') && ($currentFileName != 'design' || $currentFileName != 'photo') ) {
echo 'code';
}
?>
如果仍然无法正常工作,请调试$subdomain
和$currentFileName
以确保它们符合您的想法。
注意:根据评论,您的逻辑似乎也是错误的。