如何解决如何在$ _POST中搜索动态添加的输入值?
我有一个表格,可以随时添加输入。
输入的名称以相同的开头,但在末尾添加一个数字:Args: [
"mysqld","--max-connections=1000","--sql-mode=ALLOW_INVALID_DATES,ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE,IGNORE_SPACE,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_UNSIGNED_SUBTRACTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,ANSI,DB2,MAXDB,MSSQL,MYSQL323,MYSQL40,ORACLE,POSTGRESQL,TRADITIONAL","--wait-timeout=28800" // 28800 sec = 8 hours
],
现在,当我发布表格时,我想循环抛出该输入。
所以我需要类似<input type="number" name="number_of_floors_house_'+i+'">
或者找到所有以'number_of_floors_house '开头的$ POST ['keys'],然后将其循环以获取其值:)
可以帮忙吗?
编辑
我尝试过:
array_search($_POST['number_of_floors_house_%']
解决方法
将您的输入更改为以下内容:
<input type="number" name="number_of_floors['+i+']">
方括号使输入作为数组提交,因此您可以轻松遍历所有值:
foreach($_POST['number_of_floors'] as $house_number => $value) {
// $house_number will be whatever number was added to the form element.
// $value is the actual input boxes value
}
,
您可以使用array_filter()
来选择您实际想要的$ _POST内容
//fake up a post array
$_POST = ['aa'=>1,'bb'=>2,'number_of_floors_house_1'=>2,'number_of_floors_house_2'=>2,'number_of_floors_house_3'=>4];
function picker($v,$k)
{
return strpos($k,'number_of_floors_house') !== FALSE;
}
$res = array_filter($_POST,'picker',ARRAY_FILTER_USE_BOTH);
print_r($res);
结果
Array
(
[number_of_floors_house_1] => 2
[number_of_floors_house_2] => 2
[number_of_floors_house_3] => 4
)
,
您可以过滤与array_filter()
和strncmp()
给定前缀匹配的数组键:
$prefix = 'number_of_floors_';
$length = strlen($prefix);
$nof = array_filter($_POST,function($key) use ($prefix,$length) {
return strncmp($prefix,$key,$length) === 0;
},ARRAY_FILTER_USE_KEY);
这将过滤所有具有已定义前缀的数组成员的帖子数据。请注意,我们正在检查函数外部的前缀长度,以避免在函数内部重复冗余求值(对每个数组成员执行一次)。当然,您也可以只针对单个用例对此进行硬编码,并跳过上面的主要变量:
$nof = array_filter($_POST,function($key) {
return strncmp('number_of_floors_',17) === 0;
},ARRAY_FILTER_USE_KEY);
...它将把每个键的前17个字符与定义的字符串进行比较。同样,您也可以使用substr()
代替strncmp()
,并以return substr($key,$length) === $prefix
作为过滤条件。在本示例中,我选择了前者,因为它明确地用于“
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。