两个 PHP 变量定义之间的差异


Difference between two PHP variable definitions

我有两个变量定义,我试图理解两者之间的区别,以便将它们合并为一个。

PHP 定义 1:

$page = $_GET['page'];

PHP 定义 2:

$page = 0;
 if(isset($_GET['page'])){
    $page = (int) $_GET['page'];
 }

您的第二个定义将通过不尝试将其分配给任何内容来抑制未设置$_GET['page']时遇到的任何错误。

第二个定义中的(int)部分将$_GET['page']转换为整数值。这将抑制您可能受到的任何攻击,尽管您仍然应该小心。

最后,$page = 0只是为 $page 设置默认值。如果 $_GET 中没有值,$page将保持值 0 。这还可以确保始终设置$page,如果您在代码段下方的代码中使用它。

我不知道你说的merge them into one是什么意思;第二个片段是第一个片段的扩展(和改进(。

第一个代码块分配给$page $_GET['page']中的任何值。

第二个将默认值 0 分配给 $page 。并且if语句将首先检查是否设置了$_GET['page'](以避免警告(。如果确实设置了,它将$_GET['page']的值转换为整数并将其分配给$page

我个人会使用:

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

或者array_key_exists。