2012-02-06 77 views
0

我在我的代碼中創建函數來清理它,其中一個用於計算分頁的偏移量。我可以使用可能未設置的變量調用函數嗎?

功能是

function pageOffSet($page, $count, $resultsPerPage) { 
    // WORK OUT HIGHEST PAGE NUMBER 
    $pageCount = ceil($count/$resultsPerPage); 
    // IF GET PAGE VARIABLE IS HIGHER THAN MAX PAGE POSSIBLE 
    if (isset($page) && $page > $pageCount) { 
      $page = $pageCount; 
    // IF VALID GET PAGE VARIABLE 
    } elseif (isset($page) && is_numeric($page) && $page > 1) { 
      $page = $page; 
    // IF PAGE GET VARIABLE NOT SET 
    } else { 
      $page = 1; 
    } 
    // OFFSET FOR POST RESULTS 
    $offSet = ($page - 1) * $resultsPerPage; 
    return array('offSet' => $offSet, 'resultsPerPage' => $resultsPerPage); 
} 

我這樣稱呼它,

$page = pageOffSet($_GET['page'], $count, 15); 

除了$_GET['page']可設置或取消?我在函數內部檢查它是否設置,但是可以這樣做嗎?我沒有得到任何錯誤,但我只想檢查?

+0

它會生成一個E_NOTICE信息:http://codepad.org/0Th4zTT0 – ComFreek 2012-02-06 12:17:28

+0

順便說一句,我會在這裏使用一個默認的參數值:function pageOffSet($ count,$ resultsPerPage,$ page = 1)。然後你可以確定$頁面總是被設置。 – artshpakov 2012-02-06 12:22:29

+0

然後我的分頁不起作用?!?!? – cgwebprojects 2012-02-06 12:32:43

回答

1

一個錯誤,但可能會產生警告,這取決於你的錯誤報告設置。然而,更好的方法可能是使用默認參數:

function pageOffSet($count, $resultsPerPage, $page = NULL) { ... } 

然後檢查是否$page是存在的,使用:

if ($page) 

或檢查,如果它不存在,使用:

if (!$page) 

這樣,你可以使用前兩個參數而不需要提供最後一個;或者您可以提供全部三種。要使用$page,請檢查它是否爲NULL並相應地使用它。

+0

這似乎是一個很棒的解決方案,不知道PHP可以使用標量參數! – cgwebprojects 2012-02-06 12:37:41

4

當您訪問$_GET['page']時,PHP會通知該索引未設置。如果您沒有看到通知,請調整您的ERROR_REPORTING。您應該始終在開發環境中顯示通知。

使用這樣的檢查,如果變量被設置(和強制轉換爲int):不會產生

$pageNumber = isset($_GET['page']) ? (int) $_GET['page'] : 0; 
$page = pageOffSet($pageNumber, $count, 15); 
+0

+1用於錯誤報告和投射。 IMO的代碼會更清晰,如果你想把'isset'三元組放在一個帶有中間變量的單獨行上。 – mvds 2012-02-06 12:21:05

相關問題