我有一个表格,其中包含多个不同形式的输入,希望每个用户都有 15 个输入要传递。在这种情况下,我在表中有大约 80 个用户,我必须一次将所有表单输入发布到服务器站点。
但是,我收到了有关接收超过 1000 个输入变量的 PHP 警告,并建议增加输入变量长度的最大上限。在这种情况下,我只收到大约 75 个用户的输入。表单输入通过 jQuery 方法传递.serialize()
我想知道如何计算 php 中的输入变量计数...我尝试使用count($request->getParams())
它返回15(外层键计数),我的返回变量是这样的:
name => array (
[0] => john
....
[79] => Serene
),
age => array (
[0] => 21,
....
[79] => 24,
),
....
在这种情况下,变量计数是否为15个键乘以 80 个键值对,总共1200个变量?这是PHP通过计算所有传入表单输入来计算输入变量的方式吗?
我知道如何计算多维数组,但我只是想知道 PHP 是通过计算外层键计数还是输入变量中的所有键来确定输入变量长度?
(附言由于代码的设计,表格必须发布所有用户信息表单输入)
如果可能,通过序列化表单以 json 格式发布数据。您可以在服务器端解析 json 以获取所有字段。因此,您只能在单个参数中发布数据
下面是将表单数据序列化为 json 的 jquery 示例
var data = $('#myForm').serializeArray();
$.post("page.php", data);
在 php 端可以获取键值形式的关联数组
$data = json_decode($_POST['data'], true);
你的意思是count($_POST, true)
?
count (混合$array_or_countable[, int$mode= COUNT_NORMAL ])
模式
如果可选模式参数设置为COUNT_RECURSIVE(或1),则 count() 将递归计数数组。这对于计算多维数组的所有元素特别有用。
我想这更合适:
count($_POST, COUNT_RECURSIVE)
特别注意递归计数数组
当然,当你可以计算它们时,你可能已经超过了限制,这是针对HashDos(数组哈希表冲突攻击)。
几年前,我看了老板">Rasmus Lerdorf"(发明 PHP 的人)的精彩网络研讨会(在 HashDos 上不计算数组......哈哈)。
*PS- 如果你不知道计数可以接受 2 个参数,我不会说我花了多长时间才弄清楚那个......
你可以做以下事情:
分享我们具有多个字段的多行的经验。
对于每个用户行,添加一个复选框Edit
,默认情况下未选中。
并且禁用了所有行的字段。
如果要编辑用户行,请单击该复选框。
将启用该行中的表单元素。
用户不太可能将数据添加到表单中的 75 到 80 行。
因此,只会发布用户启用的那些行。
禁用的表单元素不会提交。
而且计数很可能不到 1000。
尝试使用这种方式希望对您有所帮助
$count = 0;
foreach ($array as $type) {
$count+= count($type);
}
检查这个