只要有简单的问题。我有带有 ajax 的 PHP 页面,它会生成一些表单。这些表单可以使用 ajax 提交。将发送到 PHP 动作脚本的数据可以是$POST['city0']
or $POST['city5']
or$POST['city20']
等等。
那么我怎样才能访问这个 POST 数据呢?是这样的吗:
$city = POST['city[..]'] ;
可能的?什么是正确的语法?
提前谢谢!
如果您不关心数组中项目的索引,您可以使用这个简单的数组语法:
<form name="example" action="" method="POST">
<input type="text" name="city[]">
<input type="text" name="city[]">
<input type="text" name="city[]">
</form>
或者你可以给他们编号索引:
<form name="example" action="" method="POST">
<input type="text" name="city[15]">
<input type="text" name="city[7]">
<input type="text" name="city[203]">
</form>
或字符串索引:
<form name="example" action="" method="POST">
<input type="text" name="city[ny]">
<input type="text" name="city[ca]">
<input type="text" name="city[or]">
</form>
无论您选择哪种形式,您都可以通过以下方式访问:
$myVar = $_POST['city'][$index];
而且,一如既往,print_r()
是您的朋友,因为如果您不知道或不记得,它会向您展示数据的结构:
print_r($_POST);
会给你类似的东西:
Array
(
[city] => Array
(
[ny] => one
[ca] => two
[or] => three
)
)
将输入名称属性设置为name="city[]"
,这样$_POST['city']
将是一个数组。
这样做,您将不得不尝试从city0
到 的每一种可能性cityN
。
我建议你这样命名你的参数:city[X]
其中 X 是数字。
然后,您可以使用这样的 foreach 简单地循环遍历所有值:
foreach($_POST['city'] as $key => $city) "city[" . $key . "] = " . $city;
你可以 $_POST["city".(string)0];
用来获取它们。
或者通过它们循环
for( $i=0; $i != 5; $i++ ){
echo $_POST["city".$i];
}
如果您可以修改您的表单想法,@Danijel 的答案是最好的,将数据作为数组传回。
我真的在想,在 PHP 中是否可以使用“类似 bash”的样式,类似于此 -touch file{1..3} && rm file{1..3}
最后我放弃并将复选框数组和表单名称更改为更多指定。并为接收 PHP 脚本提供线索。之前是:
$counter = 0;
foreach ($states as $state){
echo "<form id=\"form" . $counter . "\">";
// Here we do MySQL request and pulling out cities
// where state=$state to $cities array...
// Then unpack em as a check-boxes:
foreach($cities as $city){
echo "<input type=\"checkbox\" name=\"city" . $counter . "[]\" ...
...
$counter++;
}
现在我将其更改为:
foreach ($states as $state){
echo "<form id=\"form_" . $state . "\">";
// Here we do MySQL request and pulling out cities
// where state=$state to $cities checkbox array...
// Then unpack em as a check-boxes:
foreach($cities as $city){
echo "<input type=\"checkbox\" name=\"city_" . $state . "[]\" ...
...
echo "<input type=hidden name=state value=".$state.">";....
因为 $state 默认情况下没有重复项,所以所有生成的元素都有自己唯一的名称
现在我可以轻松访问$_POST['city_?']
:
$state = $_POST['state'];
echo $_POST['city_'.$state];
等等..谢谢大家,谁在这里帮助了我