2013-02-09 38 views
0

下面是在一個瀏覽函數中的下面的代碼我想了解我不明白的部分是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"; 
    } 
} 
+2

你用谷歌翻譯來問這個問題嗎? – 2013-02-09 22:39:02

+0

@ H2CO3我不知道發生了什麼,但我明確地沒有這樣寫。我編輯它試圖更有意義。 – 2013-02-09 22:50:19

回答

2

有幾個部分的這樣:

  • TrueFalse是可以保存在變量的值。這種類型的值被稱爲布爾值。而不是if ($a == $b) { ... },你可以說$c = ($a == $b);,然後再做if ($c) { ... }。布爾的這個概念對大多數(如果不是所有的)編程語言都是通用的。
  • 在PHP中(但不是所有語言),如果您將非布爾變量視爲布爾值(例如,通過使用if進行測試,或將其與andor組合),它不會是錯誤的,並且變量將使用某些規則進行轉換。除了0,NULL,空數組,空字符串和其他一些東西之外,基本上大部分東西都轉換爲真(它們是「真」),它們轉換爲假(它們是「假」)。

所以在你的例子中if (!$pages) { $pages = 1; }是說如果頁數爲零,確保至少有一個。這是說if ($pages == 0)更短的方式。

1

該條件檢查$pages是否爲0。布爾值truefalse通常分別由二進制文件10定義。因此,if(!$pages)的意思是「如果$pages的值爲false(或0),則執行條件正文並將$pages設置爲1」。相反,if($pages)意味着execute the condition body if $pages > 0

0

我不確定這是什麼語言,但它應該清楚地定義在預期布爾表達式時什麼算作「真」和「假」。例如,在C中,任何非零整數值都是「true」;其他任何東西都是「假」。某些語言還會定義哪些字符串值被視爲「真」或「假」。這正是代碼中的if語句所做的。

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(包括尚未設定的變量)的空標籤

如果沒有這些比賽$pages的將是真實的,創造

  • 的SimpleXML對象,其通常會觸發if執行,但比賽被逆轉與!。因此,如果$pages設置爲某個真值,則if條件爲false,並且if不會運行 - 僅保留$pages。如果$pages設置爲某個false值,那麼if條件爲true,它將執行,並且頁面設置爲1。

  • +0

    現在確定可以說使用$ wp_query-> max_num_pages將$ pages設置爲10頁;那麼如果(!10)評估將評估爲真,因爲10是錯誤的,並且!錯誤是真實的。我仍然困惑。 – 2013-02-09 23:03:32

    +0

    這基本上是正確的。 10不匹配任何被視爲「假」的東西,所以它是「真」,其相反是「假」。 – 2013-02-09 23:43:05