PHP 警告:遇到非数字值

PHP Warning: A non-numeric value encountered

我收到以下错误 "PHP Warning: A non-numeric value encountered on line 11"。以下代码用于分页。我已经尝试了我所知道的一切,不知道还能做什么。感谢任何帮助。

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

好像$pageNum不是数字,也就是字符串,试试:

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

有些东西不是数字(听起来很明显,这是错误)并且如果您手动将所有东西设置为除 GET 值以外的整数,试试这个:

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

注意 GET 参数转换为 int

你也可以只转换为 int 并且 PHP 将默认为整数 0 如果它还不是 int:

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

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

$rowsPerPage = 20;

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

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

如果 $_GET['page'] 是非数字 不要只是将其转换为 int 以消除警告。 如果它是非数字,将其转换为数字将阻止警告,但由于非数字值将始终转换为零,因此您的分页将永远不起作用。

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