我可以使用可能未设置的变量调用函数吗?

时间:2012-02-06 12:15:19

标签: php

我正在我的代码中创建函数来清理它,其中一个用于计算分页的偏移量。

功能是

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']可以设置或取消设置吗?我检查函数内部是否设置,但是可以这样做吗?我没有错,但我只想查一下?

2 个答案:

答案 0 :(得分:4)

当您访问$_GET['page']时,PHP会抛出未设置索引的通知。如果您没有看到该通知,请调整ERROR_REPORTING。您应始终在开发环境中显示通知。

使用类似的东西来检查变量是否已设置(并转换为int):

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

答案 1 :(得分:1)

不会发生错误,但可能会生成警告,具体取决于您的错误报告设置。但是,更好的方法可能是使用默认参数:

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

然后检查$page是否存在,请使用:

if ($page)

或者检查它是否存在,请使用:

if (!$page)

这样,您可以使用前两个参数而无需提供最后一个参数;或者你可以提供这三个。要使用$page,请检查它是否为NULL并相应地使用它。