PHP警告:遇到非数字值

PHP警告:遇到非数字值,php,php-7.2,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; 似乎$pageNum不是数字,即字符串,请尝试: $o

我得到以下错误“PHP警告:第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;

似乎
$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,如果它还不是int,PHP将默认为整数0:

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

我忍不住-您也可以使用三元来使
$pageNum
的设置更干净(IMO):

有些内容不是数字(听起来很明显,这是错误),如果您手动将所有内容设置为除GET值以外的整数,请尝试以下操作:

$rowsPerPage = 20;
if (isset($_GET['page'])) {
    $pageNum = (int) $_GET['page'];
}
if(empty($pageNum)) {
    $pageNum = 1;
}
$offset = ($pageNum - 1) * $rowsPerPage;
注意GET参数的转换为
int

您也可以强制转换为int,如果它还不是int,PHP将默认为整数0:

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

我忍不住-您也可以使用三元来使
$pageNum
的设置更干净(IMO):


如果
$\u GET['page']
是非数字的,不要只是将其转换为int以消除警告。如果是非数字,将其转换为数字将防止出现警告,但由于非数字值将始终转换为零,因此分页将永远无法工作


如果您想让分页正常工作,您需要通过发现为什么
$\u GET['page']
是非数字的,并解决这个问题来处理警告。使用调试器或
var\u dump($\u GET['page']
查看其中的实际内容。找到后,您应该能够将其追溯到发出请求的任何内容并更正错误。

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


如果希望分页正常工作,则需要通过发现为什么
$\u GET['page']
为非数字并解决该问题来处理警告。使用调试器或
var\u dump($\u GET['page']
查看其中的实际内容。找到后,您应该能够将其追溯到发出请求的任何内容并更正那里的错误。

$\u GET['page']
可能是一个字符串,强制转换它……或者可能是更好的方法:
$pageNum=(int)!empty($\u GET['page'])?$\u GET['page']:1;
A
警告
不是一个
错误
$pageNum
可以是第11PHP行中的一个字符串当对包含数字字符串的变量执行数学运算时,PHP不会生成警告,因此
$\u GET['page']
必须包含非数字的内容。
$\u GET['page']
可能是一个字符串,强制转换它…或者可能是一个更好的方法:
$pageNum=(int)!empty($\u GET['page'])?$\u GET['page']:1;
A
警告
不是一个
错误
$pageNum
可能是第11PHP行中的字符串对包含数字字符串的变量执行数学操作时,PHP不会生成警告,因此
$\u GET['page']
必须包含非数字的内容。如果
$pageNum
是非数字的,则
intval
将其转换为零。从0中减去1将得到-1,将
$rowsPerPage
乘以-1将得到负偏移量,可能不是期望的结果。如果
$pageNum
是非数字的,则
intval
将进行转换将其rt为零。从0中减去1将得到-1,将
$rowsPerPage
乘以-1将得到负偏移量,可能不是期望的结果。