【发布时间】:2025-11-27 00:50:01
【问题描述】:
我对发布数据变量名称有疑问,例如我可能会得到这种类型的输入:
<input type="number" name="amount[BKP1P+NC10A]" />
从理论上讲,数组元素名称没有任何问题,当我不在 codeigniter 中时,我会收到数组名称并照常访问它,但奇怪的是当我使用 $this->input->post() 甚至当我访问数据时直接从$_POST 删除数组元素名称,而是得到一个枚举数组。
例如在普通帖子中(没有 codeigniter)我得到:
array(1) {
["amount"]=>
array(1) {
["BKP1P+NC10A"]=>
string(2) "12"
}
}
在 codeigniter 中我得到了这个:
array(1) {
["amount"]=>
array(1) {
[0]=>
string(2) "12"
}
}
谁能告诉我发生了什么以及如何获取实际名称而不是枚举数组?
感谢和问候
【问题讨论】:
-
为什么您需要输入数组名称为
BKP1P+NC10A。我没有证据,但我强烈怀疑 CodeIgniter->post()删除了一些特殊字符,可能是为了一些潜在的安全漏洞,或者可能只是为了开发人员的理智。 -
这种类型的代码是零件号,是的,它可以用作元素。在 codeigniter 中,不仅 ->post() 甚至 $_POST 的行为都相同并获得一个枚举数组
-
它似乎不能用作 CodeIgniter 中的一个元素,这可能就是你得到这种行为的原因。它可能没有记录,您必须查看 CodeIgniter 的系统代码以确认(并修复),但如果此数组元素名称给您带来意外行为,则可能是因为 + 符号。使用数据键来存储数据是非常规的。与其尝试使用一个字段做两件事,您应该有两个字段,一个是您现在拥有的带有通用键名的字段,另一个是带有部件号的隐藏字段。
-
其实是+,我也可能有.在零件编号中,这两个让我有了这种行为。虽然我尝试编码使 + 更改为 %2B,但效果仍然相同
标签: php arrays codeigniter post