我对使用filter_has_var($_POST['id'])
优于isset($_POST['id'])
的好处感到困惑。
有人可以告诉我它是否只是一个别名函数?
答案 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';
将打印不存在