1

只要有简单的问题。我有带有 ajax 的 PHP 页面,它会生成一些表单。这些表单可以使用 ajax 提交。将发送到 PHP 动作脚本的数据可以是$POST['city0']or $POST['city5']or$POST['city20']等​​等。

那么我怎样才能访问这个 POST 数据呢?是这样的吗:

$city = POST['city[..]'] ;

可能的?什么是正确的语法?

提前谢谢!

4

5 回答 5

4

如果您不关心数组中项目的索引,您可以使用这个简单的数组语法:

<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
        )
)
于 2013-05-30T15:27:38.427 回答
3

将输入名称属性设置为name="city[]",这样$_POST['city']将是一个数组。

于 2013-05-30T15:02:33.443 回答
1

这样做,您将不得不尝试从city0到 的每一种可能性cityN

我建议你这样命名你的参数:city[X]其中 X 是数字。

然后,您可以使用这样的 foreach 简单地循环遍历所有值:

foreach($_POST['city'] as $key => $city) "city[" . $key . "] = " . $city;
于 2013-05-30T15:03:48.103 回答
0

你可以 $_POST["city".(string)0];用来获取它们。

或者通过它们循环

for( $i=0; $i != 5; $i++ ){
    echo $_POST["city".$i];
}

如果您可以修改您的表单想法,@Danijel 的答案是最好的,将数据作为数组传回。

于 2013-05-30T15:09:32.280 回答
0

我真的在想,在 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];

等等..谢谢大家,谁在这里帮助了我

于 2013-05-31T11:20:20.300 回答