0

以下は、私が理解していない部分を理解しようとしているページネーション関数の次のコードですif(!pages){ $pages =1)} 。$pages 変数でない場合。私が言おうとしているのは、比較されている Pages 変数とは何かということです。私は混乱しています

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

これが完全な機能です。ページネーションの数字が右と左だけでなくても書き直せるように、少しずつ理解しようとしています。

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

4 に答える 4

2

これにはいくつかの部分があります。

  • TrueFalseは、変数に保存できる値です。このタイプの値はブール値と呼ばれます。if ($a == $b) { ... }あなたが言う代わりに$c = ($a == $b);、後で行うことができますif ($c) { ... }。このブール値の概念は、すべてではないにしてもほとんどのプログラミング言語に共通しています。
  • PHP では (ただし、すべての言語ではありません)、ブール値以外の変数をブール値であるかのように扱った場合 (たとえば、 でテストしたりif、 または と組み合わせたりすることによってand) or、エラーにはならず、変数は次のようになります。特定のルールを使用して変換されます。基本的に、0、NULL、空の配列、空の文字列、および false に変換される他のいくつかのもの (「偽」) を除いて、ほとんどのものは true (「真実」) に変換されます。

したがって、if (!$pages) { $pages = 1; }あなたの例では、ページ数がゼロの場合は、少なくとも 1 つあることを確認してください。より短い言い方ですif ($pages == 0)

于 2013-02-09T23:12:38.043 に答える
2

ページではない場合は、ifステートメント内のコードを楽しんでくださいね。

コードは$wp_queryオブジェクトを「グローバル化」して、関数のスコープ内でアクセスできるようにします。に設定$pages$wp_query->max_num_pagesます。次に、その値をチェックして、 を実行するかどうかを決定しますif。それがどのように機能するかは少しトリッキーですが、ここまでです。

PHP はいくつかのことを考慮します。FALSE

  • ブール値の FALSE 自体
  • 整数 0 (ゼロ)
  • float 0.0 (ゼロ)
  • 空の文字列、および文字列 "0"
  • 要素がゼロの配列
  • メンバー変数がゼロのオブジェクト (PHP 4 のみ)
  • 特別な型 NULL (未設定の変数を含む)
  • 空のタグから作成された SimpleXML オブジェクト

これらの一致のいずれも$pagestrue にならない場合、通常は のif実行をトリガーしますが、一致は で逆になり!ます。したがって、$pagesが何らかの真の値に設定されている場合、if条件はfalseであり、実行さifれません。そのままにしておき$pagesます。が何らかの値に$pages設定されている場合、条件はであり、実行され、ページが 1 に設定されます。falseiftrue

于 2013-02-09T22:57:43.490 に答える
1

条件は であるかどうかをチェックし$pagesます0。ブール値trueおよびfalseは通常、バイナリ1および0それぞれによって定義されます。したがって、if(!$pages)「 の値が(または) に$pages評価された場合、条件本体を実行し、」に設定することを意味します。逆に、を意味します。false0$pages1if($pages)execute the condition body if $pages > 0

于 2013-02-09T22:53:05.153 に答える
0

これがどの言語なのかはわかりませんが、ブール式が期待される場所で「真」と「偽」としてカウントされるものを明確に定義する必要があります。たとえば、C では、ゼロ以外の整数値はすべて「true」です。それ以外はすべて「偽」です。一部の言語では、「true」または「false」と見なされる文字列値も定義されています。これはまさに、コード内の if ステートメントが行っていることです。

于 2013-02-09T22:53:12.910 に答える