我收到以下错误“ PHP警告:第11行遇到非数值”。以下代码用于分页。我已经尝试了我所知道的一切,但不确定要做什么。任何帮助表示赞赏。
8 $rowsPerPage = 20;
9 if(isset($_GET['page'])){$pageNum = $_GET['page'];}
10 if(empty($pageNum)) {$pageNum = 1;}
11 $offset = ($pageNum - 1) * $rowsPerPage;
答案 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']
来查看其中的实际内容。找到之后,您应该可以将其追溯到发出请求的任何内容,并在那里纠正错误。