PHP警告:遇到非数字值

时间:2018-08-14 17:20:10

标签: php php-7.2

我收到以下错误“ PHP警告:第11行遇到非数值”。以下代码用于分页。我已经尝试了我所知道的一切,但不确定要做什么。任何帮助表示赞赏。

8 $rowsPerPage = 20;
9 if(isset($_GET['page'])){$pageNum = $_GET['page'];}
10 if(empty($pageNum)) {$pageNum = 1;}
11 $offset = ($pageNum - 1) * $rowsPerPage;

3 个答案:

答案 0 :(得分:2)

似乎$pageNum是非数字的,即字符串,请尝试:

$offset = (intval($pageNum) - 1) * $rowsPerPage;

答案 1 :(得分:1)

某种东西不是数字的(听起来很明显,这是错误的),并且鉴于您手动将所有内容设置为除GET值以外的整数,请尝试以下操作:

$rowsPerPage = 20;
if (isset($_GET['page'])) {
    $pageNum = (int) $_GET['page'];
}
if(empty($pageNum)) {
    $pageNum = 1;
}
$offset = ($pageNum - 1) * $rowsPerPage;

请注意将GET参数转换为int

您还可以将其强制转换为int,如果PHP尚未为int,则PHP将默认为整数0:

$pageNum = (int) $_GET['page'];

无法帮助自己-您也可以使用三元设置来设置$pageNum清洁器(IMO):

$rowsPerPage = 20;

$pageNum = isset($_GET['page'])
    ? (int) $_GET['page']
    : 1;

$offset = ($pageNum - 1) * $rowsPerPage;

答案 2 :(得分:1)

如果$_GET['page']是非数字不要只是将其转换为int以摆脱警告。如果它是非数字,则将其转换为数字将防止警告,但由于非数字值将始终转换为零,因此分页将永远无法进行。

如果您希望分页正常工作,则需要通过发现为什么 $_GET['page']不是数字并修复该警告来处理该警告。使用调试器或var_dump($_GET['page']来查看其中的实际内容。找到之后,您应该可以将其追溯到发出请求的任何内容,并在那里纠正错误。