循环遍历一个POST数组

16
我需要遍历一个帖子数组并提交它。
#stuff 1
<input type="text" id="stuff" name="stuff[]" />
<input type="text" id="more_stuff" name="more_stuff[]" />
#stuff 2
<input type="text" id="stuff" name="stuff[]" />
<input type="text" id="more_stuff" name="more_stuff[]" />

但是我不知道从哪里开始。

3
和你循环其他数组的方式一样,你可以遍历这个数组。 - Ignacio Vazquez-Abrams
一些示例代码会很好。 - Hüseyin Z.
1
阅读一些基本文档,例如http://php.net/manual/en/language.variables.external.php和http://php.net/manual/en/control-structures.foreach.php。 - Felix Kling
这个问题需要更多的关注。我们不知道你对“提交它”的最终期望是什么。 - undefined
6个回答

40

你可以这样做:

foreach( $_POST as $stuff ) {
    if( is_array( $stuff ) ) {
        foreach( $stuff as $thing ) {
            echo $thing;
        }
    } else {
        echo $stuff;
    }
}

这会同时处理通过$_POST传递的变量和数组。


1
问题是更多的东西[]怎么办? - user1324780
2
print_r($_POST)非常简单。如果你真的想的话,甚至可以把它放在一些<pre>标签之间。 - Mr Wednesday
1
不错的解决方案,但第一个echo后面缺少了分号 :P - gosua

30

很可能,您还需要每个表单元素的值,例如从下拉列表或复选框中选择的值。

 foreach( $_POST as $stuff => $val ) {
     if( is_array( $stuff ) ) {
         foreach( $stuff as $thing) {
             echo $thing;
         }
     } else {
         echo $stuff;
         echo $val;
     }
 }

7
for ($i = 0; $i < count($_POST['NAME']); $i++)
{
   echo $_POST['NAME'][$i];
}

或者

foreach ($_POST['NAME'] as $value)
{
    echo $value;
}

NAME替换为元素名称,例如stuffmore_stuff


1
$i < count($_POST['NAME']); 更加正确,不是吗? - jeffkee

3

我改编了被接受的答案,并将其转换为可以执行第 n 个数组并包括数组键的函数。

function LoopThrough($array) {
    foreach($array as $key => $val) {
        if (is_array($key))
            LoopThrough($key);
        else 
            echo "{$key} - {$val} <br>";
    }
}

LoopThrough($_POST);

希望这能帮助到某些人。

2
您可以使用array_walk_recursive和匿名函数,例如:
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
array_walk_recursive($fruits,function ($item, $key){
    echo "$key holds $item <br/>\n";
});

以下是答案版本:

array_walk_recursive($_POST,function ($item, $key){
    echo "$key holds $item <br/>\n";
});

1
由于使用了已发布的答案,我不知何故丢失了索引名称。因此我必须像这样循环它们:
foreach($_POST as $i => $stuff) {
  var_dump($i);
  var_dump($stuff);
  echo "<br>";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接