为什么 $_REQUEST 中的元素数量小于我max_input_vars设置的限制


why is the number of elements in $_REQUEST smaller than the limit i set by max_input_vars?

我的测试服务器上有一件奇怪的事情:我将max_input_vars设置为仅100,并发送了包含over 100元素的巨大请求

我使用过:

$num=count($_REQUEST, COUNT_RECURSIVE);
$max=ini_get('max_input_vars');
if($max - $num<50) {
              die('Number of requests ('.$num.') near the maximum allowed value of max_input_vars:'.ini_get('max_input_vars'));
}

但我收到错误

请求数(90)接近允许的最大值 max_input_vars:100

为什么只有90?

不应该是100还是99?

如果我

设置更高的限额,准确地说,我会在 _REQUEST 美元中获得 240 个 vars:

  • $_GET: 1
  • $_POST: 239
  • $_COOKIE: 1

max_input_vars 不计算子数组容器,而 count($a, COUNT_RECURSIVE) 计算,因此您必须使用递归循环:

$count = 0;
array_walk_recursive($_REQUEST, function($v) use(&$count) {
    if(!is_object($v)) ++$count;      //or if(is_string($v))
});