如何将Codeigniter的表单验证与PHP的计数(数组)集成?

如何将Codeigniter的表单验证与PHP的计数(数组)集成?,php,arrays,forms,validation,codeigniter,Php,Arrays,Forms,Validation,Codeigniter,我有一个带有多选输入字段的表单,根据用户的选择返回一个数组,用户有12个选项可供选择,这意味着选择的选项不超过12个。用户还可以自由选择多个选项 因此,在最坏的情况下,用户将选择12个选项,并且将发布一个带有这些选项的数组,我不应该接受超过12个选项或少于1个选项 总之,通过查看Codeigniter的表单验证库,我没有发现任何处理数组长度的规则,也许*_长度对数组有效 此外,我做了一些快速的研究,但我找不到任何有用的,甚至与我的问题有关的东西 我想到的唯一解决方案是创建一个检查数组长度的自定义

我有一个带有多选输入字段的表单,根据用户的选择返回一个数组,用户有12个选项可供选择,这意味着选择的选项不超过12个。用户还可以自由选择多个选项

因此,在最坏的情况下,用户将选择12个选项,并且将发布一个带有这些选项的数组,我不应该接受超过12个选项或少于1个选项

总之,通过查看Codeigniter的表单验证库,我没有发现任何处理数组长度的规则,也许*_长度对数组有效

此外,我做了一些快速的研究,但我找不到任何有用的,甚至与我的问题有关的东西

我想到的唯一解决方案是创建一个检查数组长度的自定义函数
使用countArray,将函数的最小长度和最大长度作为规则传递,这可能会很好地工作,但我正在寻找一种原生的方法来完成它,而且我害怕重新发明轮子

我不会试图检查发布的数组数据的长度,因为您需要检查提交的所有内容是否确实存在,作为选择的选项

因此,如果您只需首先唯一化数组值,那么当您检查所选内容是否为您可能选择的内容时,您将自动验证输入

不过,您仍然需要一个自定义函数,因为您需要将提交的值与应该可以从中选择的值进行比较。假设这些值存在于数据库的某个地方,因此在您的自定义验证例程中,获取输入数组,将其唯一化,以防它们出于某种原因多次尝试提交相同的内容,然后循环所有提交的项目,以确保它们都作为可选选项存在


顺便说一句,“小于1选项”是指您所指的multi-select名称没有POST数据。

我认为Codeigniter中没有针对multi-select的验证功能,您可能需要创建自己的回调函数来处理验证。回调函数是否单独接收数组或每个属性?