PHP if语句不确定我哪里错了

时间:2011-10-31 02:51:48

标签: php if-statement

我正在尝试指定我的徽标出现在某些页面而不是其他页面上,我不希望它显示的唯一页面是主页和/index.php。我有大徽标出现并消失,因为我想要它,所以我认为我可以做相反的小徽标,但我一定做错了。这是我目前的代码:

<?php
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?>      
<h1 class="small-logo">
<a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php } 
?>
<?php
$currentpage = $_SERVER['REQUEST_URI']; if ($currentpage == '/' || $currentpage == '/index.php') {?>
<h1 class="logo";>
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php } 
?>

4 个答案:

答案 0 :(得分:3)

您应该使用逻辑AND:

而不是第一个条件中的逻辑OR
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?> 
// Should be
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' && $dunpage != '/') {?> 

实际上,您说“如果网页不是index.php,或者不是/,则会采取行动。”所以在这两种情况中,情况恰恰相反。如果不是index.php,则可能是/,例如。

答案 1 :(得分:2)

if ($dunpage != '/index.php' && $dunpage != '/') {

为您的小徽标。

答案 2 :(得分:2)

你正确地否定了==运算符,而不是||运营商。你说如果dunpage不是/index.php或dunpage不是/,那就这样做,这基本上意味着总是这样做。改变||和&amp;&amp;小徽标。

答案 3 :(得分:1)

为什么不使用别人?

<?php
$currentpage = $_SERVER['REQUEST_URI']; if ($currentpage == '/' || $currentpage == '/index.php') { ?>
<h1 class="logo";>
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php 
} else {
?>
<h1 class="small-logo">
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php 
}
?>

(你实际上没有提到它要么是要显示的大型或小型徽标,但我必须假设这是这种情况。)

或者你可以在这种情况下使用in_array()。

<?php
$displayMainLogo = array('/', '/index.php');
if ( in_array($_SERVER['REQUEST_URI'], $displayMainLogo) ) { ?>
<h1 class="logo";>
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php 
} else {
?>
<h1 class="small-logo">
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>
<?php 
}
?>

如果您了解如何进行三元组(http://php.net/manual/en/language.operators.comparison.php),那么这就像您可以做到的那样简洁。

<h1 class="<?php echo (in_array($_SERVER['REQUEST_URI'], $displayMainLogo)) ? 'logo' : 'small-logo' ?>";>
  <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a>
</h1>