http://php.net/manual/en/function.filter-input-array.php
filter_input_array()
mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )
Possbile $type
值:
INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV
是否可以计算与“type”参数(一个整数)相关联的元素数量而无需引用超级全局?由于“type”参数是一个整数,我认为以下内容不起作用。
非工作示例:
count(INPUT_POST);
我的目标是测试计算与“type”参数关联的元素的结果,以查看是否至少提交了元素的最小数量或最多数量。范围检查对我来说不是问题。在不使用超全局的情况下获取外部超级全局元素的计数是我的问题。
在带有数组和计数器的循环中使用filter_has_var()
将不足以,因为仅计算我想要过滤的元素,这些元素也存在于给定的“键入“参数(INPUT_POST,INPUT_GET,...)”关联的超级全局($ _POST,$ _GET)。
如果存在的元素多于我想要允许的元素,或者存在的元素少于所需元素,则我的程序应抛出异常并采取适当的操作。
答案 0 :(得分:0)
我不知道为什么你不想使用超全球,因为这是filter_input_array
正在使用的数据,虽然看起来它使用“作为提交的数据”而不是实际的超全球。如果不使用超全球,最好的选择就是:
if( ($count = count($filtered = filter_input_array(INPUT_POST))) > 2 && $count < 5 ) {
//use $filtered
} else {
//error
}
您可以将其定义为函数并传入最小值和最大值。
否则,如果没有$_POST
,您将无法计算count($_POST)
中的条目。您可以使用filter_input_array
访问未提交的未修改数据,也可以使用超级全局来反映您对其所做的任何更改。
答案 1 :(得分:0)
count(filter_input_array(INPUT_SERVER));
count(filter_input_array(INPUT_POST));
count(filter_input_array(INPUT_GET));
。 。
你从这里做什么取决于你。