在阅读/使用它们之前,我们是否总是需要检查是否设置了post和get变量?

时间:2016-10-05 09:18:54

标签: php http variables

考虑以下示例:

if ( isset($_POST['type']) && 'page' == $_POST['type'] )
    return;

我们需要isset($_POST['type'])检查吗?

从目前为止我看到的结果似乎如下:

if ( 'page' == $_POST['type'] )
    return;

或者这会在某些情况下引起问题吗?

2 个答案:

答案 0 :(得分:0)

使用“isset”是正确的方法,否则会抛出警告:“索引类型未定义”。它还会检查数组是否为空。

isset()函数将用于替换两个函数

if(!empty(your_array) && array_key_exists('type',$POST['type']))

因此,请使用此检查以避免进一步的并发症

答案 1 :(得分:0)

这可能会导致错误通知:PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"

等问题

您可以使用array_key_exists代替issetarray_key_exists方法肯定会告诉您数组中是否存在键,而如果键/变量存在且不为null,则isset将仅返回true

还有另一个重要区别。isset在$ x不存在时不会抱怨,而array_key_exists则会抱怨。

$x = [
    'key1' => 'abcd',
    'key2' =>  null
];

isset($x['key1']);             // true
array_key_exists('key1', $x);  // true

isset($x['key2']);             // false
array_key_exists('key2', $x);  // true