Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP if语句不确定I';我错了_Php_If Statement - Fatal编程技术网

PHP if语句不确定I';我错了

PHP if语句不确定I';我错了,php,if-statement,Php,If Statement,我试图指定我的徽标显示在某些页面上,而不是其他页面上,我不希望它显示在主页和/index.php上。我有大的标志出现和消失,因为我想它,所以我认为我可以做相反的小标志,但我一定是做错了什么。这是我目前的代码: <?php $dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?> <h1 class="small-logo"> <a hr

我试图指定我的徽标显示在某些页面上,而不是其他页面上,我不希望它显示在主页和/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 } 
?>

试试看


对于您的小徽标。

您正确地否定了==运算符,但没有否定| |运算符。您的意思是,如果dunpage不是/index.php或dunpage不是/,那么就这样做,这基本上意味着总是这样做。将小徽标的| |更改为&。

在第一种情况下,您应该使用逻辑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
,它可能是
/

为什么不使用else

<?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>

$dunpage!='/index.php“| |$dunpage!=”/“
此条件的计算结果始终为
TRUE
谢谢大家的快速回复。他们很有帮助。我相信这为我节省了很多时间:-)@user1021330欢迎使用堆栈溢出。如果您对答案感到满意,请单击分数下方的复选标记,将其标记为已接受。
<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>