如果else语句有两个条件

时间:2012-11-09 15:21:18

标签: php

是否可以使用带有两个条件的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 Code

 $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 个答案:

答案 0 :(得分:5)

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

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

请参阅php logical operators

如果您希望比较当前页面的总页数少于当前页面的数量,并且当前页面的编辑大于1,您可以这样做:

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

或者,如果您只是想检查total_pages是否大于或等于1,您可以这样做:

if ($total_pages >= 1)

答案 1 :(得分:4)

您实际上可以根据需要将comparison operators分隔为logical operators

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

答案 2 :(得分:2)

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

从您发布的var_dump的结果中可以看出,这两个变量都包含足够复杂的对象,无法将它们隐式转换为整数。

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

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

到目前为止,您的问题与您最初提出的问题无关......

答案 3 :(得分:1)

如果您想要满足这两个条件,请使用 AND&amp;&amp;

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

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

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

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