-3

是否可以有一个带有两个条件的 if esle 语句?

我有这个代码...

 if ($current_page == 1)

但是我可以这样写吗

 if ($total_pages ==1 $current_page < $total_pages)

我自己尝试过几种写法,但似乎无法让它工作。

任何想法,将不胜感激,

代码

 echo "$current_page"; echo "$total_pages";

     if ($current_page >= 1 && ($current_page < $total_pages)) { echo "next button should be here"; } else {echo "Nothing"; }

请参阅下面的链接,您可以看到它是第 1 页,共 4 页,它进入了无部分。当它应该在这里显示下一个按钮时。

http://www.qrrw.net/k

php代码

 $pageNum = $_GET['page'];
  $engine = $_GET['engine'];
  $manid = $_GET['manid'];
  $mgid = $_GET['mgid'];
  $file = 'http://mywebsite.com/page.xml?apikey=****&vid=****&limit=10&mgid='. $mgid.'&engine='. $engine.'&manid='.$manid.'&page=' . $pageNum;

  if(!$xml = simplexml_load_file($file))
   exit('Failed to open '.$file);

  $total_pages = $xml->results->attributes()->totalPages;
  $current_page = $xml->results->attributes()->currentPage;
  $total_results = $xml->results->attributes()->totalResults;

  $count = 0;
  $max = 2;
  foreach($xml->year as $year){ 

  $count++;
  echo '<td class="manu">'. "<a href='exact.php?manid=".$manid."&engine=".$engine."&mgid=".$mgid."&year=".$year['name']."'>".$year['name']."</a>";'   </td>';

 if($count >= $max){

 $count = 0;

 echo '</tr><tr>';
 }
 }
 $pageNum = $current_page = $xml->results->attributes()->currentPage;

 if ($current_page == 1) { } else {
    echo "<a href='years.php?page=".($pageNum - 1)."&engine=".($engine)."&manid=".($manid)."&mgid=".($mgid)."'><img src='../images/previous.fw.png' width='130' height='92' /></a>";
    }

    echo "$current_page"; echo "$total_pages";

    if ($current_page >= 1 && ($current_page < $total_pages)) { 
    echo "next button should be here"; 
    } else {
    echo "Nothing";  
4

4 回答 4

5

我不确定您要在这里完成什么逻辑,但是您可以通过这种方式测试两个条件:

 // if total pages are equal to 1 or 1 is less than total pages     
 if (($total_pages == 1) || (1 < $total_pages))

请参阅php 逻辑运算符

如果您要根据您的编辑比较当前页面小于总页面数并且当前页面大于一,您可以执行以下操作:

if ($current_page > 1 && ($current_page < $total_pages))

或者,如果您只想检查 total_pages 是否大于或等于 1,您可以执行以下操作:

if ($total_pages >= 1)
于 2012-11-09T15:22:51.887 回答
4

实际上,您可以根据需要使用由逻辑运算符分隔的任意数量的比较运算符

<?php 
    if(($value [Comparison Operator] $value) [Logical Operator] ($value [Comparison Operator] $value)){
      //do something
    }
?>

比较运算符

$a == $b     Equal
$a === $b  Identical
$a != $b     Not equal
$a <> $b     Not equal.
$a !== $b  Not identical
$a < $b      Less than
$a > $b      Greater than
$a <= $b     Less than or equal to
$a >= $b     Greater than or equal to

逻辑运算符

$a and $b  And 
$a or $b     Or
$a xor $b  Xor
! $a       Not
$a && $b   And 
$a || $b   Or
于 2012-11-09T15:27:29.383 回答
2

if 语句失败的原因是因为它期望$current_page$total_pages都是整数,但它们不是。

正如您从var_dump发布的结果中看到的那样,这两个变量都包含足够复杂的对象,以至于它们无法隐式转换为整数。

尝试在 if 语句之前添加以下代码:

$current_page = (int)$current_page[0];
$total_pages = (int)$total_pages[0];

至此,您的问题实际上与您最初提出的问题无关...

于 2012-11-09T16:49:50.227 回答
1

如果您希望同时满足这两个条件,请使用AND &&

if(($b > $a) && ($d > $f) 

对于其中任何一个匹配使用OR ||

if(($b > $a) || ($d > $f) 

如需完整参考,请参阅: http: //php.net/manual/en/language.operators.comparison.php

于 2012-11-09T15:59:41.967 回答