PHP если заявления не уверены, где я не прав - PullRequest
3 голосов
/ 31 октября 2011

Я пытаюсь указать, что мой логотип появляется на некоторых страницах, а не на других, единственные страницы, на которых он не отображается, - это домашняя страница и /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 ]

3 голосов
/ 31 октября 2011

Вместо логического ИЛИ в вашем первом условии, вы должны использовать логическое И:

$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?> 
// Should be
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' && $dunpage != '/') {?> 

По сути, вы говорили "действуйте, если страница не index.php или не /". Так что в любом из этих случаев обратное было бы верно. Если бы это не было index.php, это могло бы быть, например, /.

2 голосов
/ 31 октября 2011

Вы правильно отрицали оператор ==, но не || оператор. Вы говорите, что если dunpage не /index.php ИЛИ dunpage не /, то делайте это, что в основном означает, что делайте это всегда. Изменить || на && для маленького логотипа.

2 голосов
/ 31 октября 2011

1001 * попробовать *

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

для вашего маленького логотипа.

1 голос
/ 31 октября 2011

Почему вы не используете другое?

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...