我正在处理一个通过$ _POST接收大量元素的表单。其中一定数量(手动写出的数字太大)遵循以下模式:
$_POST['city_1']
$_POST['city_2']
$_POST['city_3']
$_POST['city_4']
等
表单的设置方式,我不确定会发送多少这样的元素 - 它可能是一个,它可能是50.我怎样才能处理一些$ _POST元素基于他们的名字?
答案 0 :(得分:3)
您应该创建一个多维数组。
您的HTML表单字段可能如下所示:
<input type="text" name="cities[city_1]">
<input type="text" name="cities[city_2]">
<input type="text" name="cities[city_3]">
<input type="text" name="cities[city_4]">
在您的PHP代码中,您可以通过访问$_POST['cities']
foreach($_POST['cities'] as $city)
{
echo $city;
}
答案 1 :(得分:3)
$cities = preg_grep('/^city_\d+$/', array_keys($_POST));
foreach($cities as $city) {
echo $_POST[$city];
}
或者
foreach($_POST as $name=>$value) {
if (strpos($value, 'city_') !== 0) continue;
echo $value;
}
答案 2 :(得分:1)
'foreach`遍历数组的所有元素。然后检查是否符合要求。
foreach($_POST as $key => $value)
if(preg_match("/^city_\d+$/", $key))
...
答案 3 :(得分:1)
function startsWith($haystack, $needle)
{
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
foreach ($_POST as $k=>$v)
{
if (startsWith($k, 'city_')
{
// Process parameter here ...
}
}
答案 4 :(得分:0)
你可以像数组一样遍历$ _POST。
foreach($_POST as $key=>$value) {
//filter based on $key
}