使用filter_has_var()比isset()有什么好处

时间:2011-02-04 14:59:58

标签: php

我对使用filter_has_var($_POST['id'])优于isset($_POST['id'])的好处感到困惑。

有人可以告诉我它是否只是一个别名函数?

4 个答案:

答案 0 :(得分:11)

不是很多;)根据filter_has_var的手册页,一个用户更快地找到filter_has_var。另外值得注意的是...... filter_has_var不是在实时数组($_POST)上工作,而是在实际提供的输入上...如果你曾经添加/删除/更新那个数组中的内容你就赢了通过filter_has_var调用来查看这些更改(而isset将反映当前状态)

顺便使用filter_has_var(INPUT_POST,"id");

更新:也许值得一提的是,filter_has_var是在PHP 5.2.0中引入的(有点新),而isset已经出现在所有PHP4 + 5中。大多数服务器都会及时更新,但isset将始终有效(没有人还可以运行PHP3吗?)

答案 1 :(得分:5)

首先,它不是

filter_has_var($_POST['id'])

这是

filter_has_var(INPUT_POST, 'id')

其次,它实际上并不查询$_POST超全局。它分析了请求中带来的请求参数,因此,如果$_POST被PHP脚本以某种方式弄脏,这是一种更好的方法。

答案 2 :(得分:1)

我认为你的意思是filter_has_var(INPUT_POST, 'id')超过isset($_POST['id'])

如果isset$_POST['id'],则NULL会返回false,这有一点不同;你必须使用key_exists('id', $_POST)在这方面有类似的行为。

除此之外,唯一的区别是filter_has_var不考虑对$_POST数组进行修改(请参阅this comment)。

答案 3 :(得分:0)

功能不检查实时数组

<?php
$_GET['a'] = 1;
echo filter_has_var(INPUT_GET, 'a') ? 'Exist' : 'Not exist';

将打印不存在