两个PHP变量定义之间的区别

时间:2011-08-21 18:55:25

标签: php

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

PHP定义1:

$page = $_GET['page'];

PHP定义2:

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

3 个答案:

答案 0 :(得分:5)

您的第二个定义将禁止在未尝试将$_GET['page']分配给任何内容时未遇到(int)时遇到的任何错误。

第二个定义中的$_GET['page']部分会将$page = 0转换为整数值。这会抑制你可能获得的任何攻击,尽管你仍然要小心。

最后,$page只为$_GET设置默认值。如果$page中没有值,则0将保留$page的值。如果您在代码段下方的代码中使用merge them into one,这也可确保始终设置{{1}}。

我不知道{{1}}的意思;第二个片段是第一个片段的扩展(和改进)。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我个人使用:

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

或array_key_exists。