if(!$ pages)什么不是$ pages我没有得到它

时间:2013-02-09 22:38:03

标签: php function

以下是pagenation函数中的以下代码我试图理解我不理解的部分是if(!pages){ $pages =1)}它们引用的是什么。如果什么不是$ pages变量。我想说的是什么是Pages变量,如果没有什么比较。我很困惑

if($pages == '')
     {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages)
         {
             $pages = 1;
         }
     } 

这是完整的功能,我试图一点一点地理解它,这样我就可以重写没有pagenation中的数字只是左右。

function kriesi_pagination($pages = '', $range = 2)
{  
     $showitems = ($range * 2)+1;  

     global $paged;
     if(empty($paged)) $paged = 1;

     if($pages == '')
     {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages)
         {
             $pages = 1;
         }
     }   

     if(1 != $pages)
     {
         echo "<div class='pagination'>";
         if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
         if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";

         for ($i=1; $i <= $pages; $i++)
         {
             if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
             {
                 echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
             }
         }

         if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>";  
         if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>";
         echo "</div>\n";
     }
}

4 个答案:

答案 0 :(得分:2)

  

如果什么不是页面有趣的if语句中的代码吧。

您的代码“全局化”$wp_query对象,以便在函数范围内可以访问它。然后将$pages设置为$wp_query->max_num_pages。然后检查该值以确定是否执行if。它是如何工作有点棘手,但你走了。

PHP considers several things to be FALSE

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串“0”
  • 包含零元素的数组
  • 一个零成员变量的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量)
  • 从空标签创建的SimpleXML对象

如果这些匹配$pages都不成立,这通常会触发if执行,但匹配与!相反。因此,如果将$pages设置为某个真值,则if条件为falseif不会运行 - 仅保留$pages。如果$pages设置为某个false值,if条件为true,则会执行,页面将设置为1.

答案 1 :(得分:2)

这有几个部分:

  • TrueFalse是可以保存在变量中的值。这种类型的值称为布尔值。您可以if ($a == $b) { ... }代替$c = ($a == $b);而不是if ($c) { ... }代替if。如果不是所有编程语言,这种布尔概念是很常见的。
  • 在PHP中,(但不是在所有语言中),如果您将非布尔变量视为布尔值,(例如,使用and进行测试,或将其与orif (!$pages) { $pages = 1; })它不会是错误,变量将使用某些规则进行转换。基本上大多数东西转换为true(它们是“真实的”),除了0,NULL,空数组,空字符串和一些其他东西,它们转换为假(它们是“假的”)。

因此,您示例中的if ($pages == 0)表示如果页数为零,请确保至少有一个。这是一种较短的说法{{1}}。

答案 2 :(得分:1)

条件检查$pages是否为0。布尔值truefalse通常分别由二进制文件10定义。因此,if(!$pages)表示“如果$pages的值评估为false(或0),则执行条件正文并将$pages设置为1 }”。相反,if($pages)意味着execute the condition body if $pages > 0

答案 3 :(得分:0)

我不确定这是什么语言,但它应该清楚地定义什么算作“true”和“false”,其中布尔表达式是预期的。例如,在C中,任何非零整数值都是“true”;其他任何事情都是“虚假的”。某些语言还将定义哪些字符串值被视为“true”或“false”。这正是代码中if语句的作用。