Foreach $ _POST - 如何增加指向下一个元素的数组指针

时间:2014-04-02 12:35:41

标签: php foreach next

我循环遍历$ _POST数组(生成的表单元素),我需要获取foreach循环中下一个元素的键和值。

编辑:答案的元素名称(即canbeanynameABC和canbeanynameXYZ)始终未知。

这是一个示例数组:

Array ( 
[inputid] => 87 [inputoutputtype] => radio [canbeanynameABC] => radio answer 2 
[inputid] => 88 [inputoutputtype] => radio [canbeanynameXYZ] => radio answer 4 ) 

我的代码在这里

foreach ($_POST as $key => $value) {

switch ($key) {

    case "inputid":
            echo "<br/>Value of input_id : " . $value;      
        next($_POST);       
        echo "<br/>Value of inputoutputtype : " . $value;
        next($_POST);       
        echo "<br/>Value of answer : " . $value;        
        break;
}
}

我认为通过执行next($ _ POST),指针现在将位于下一个键/值上。

显然它不起作用,我得到以下显示:

Value of input_id : 87
Value of input_output_type : 87
Value of answer : 87

非常感谢任何帮助。感谢

编辑:有人建议我使用数组来组织表单元素/值。我仍然无法弄清楚如何使用数组以便从表单返回每个答案(值),我实际上得到三个值(answer,inputid,inputoutputtype)

编辑:@CBroe我花了一个下午试图找出如何在$ _POST中使用数组。表单可以包含任意数量的元素,这些元素可以是文本,单选,选择/选项,复选框(可以返回多个值)。我从这个表单中获得的每个“值”必须与“inputid”和“inputoutputtype”相关联。这些表单和元素是使用php生成的,所以我正在尝试构建一个php表单处理程序,它将读取任意数量的元素和类型。生成器为每个元素创建唯一的名称,以便不会覆盖值。我想弄清楚如何将数组集成到生成器中,但不确定我是否能够为它们分配行号(即[0],[1] ..)..也许我只是没有看看数组如何适用于我的情况。


更新:好的,现在我正在尝试修改我的php表单处理程序来处理可能有任何名称的元素。我需要能够从表单中填写的元素中读取id,type和value(3个不同的值)。

我正在玩表单(即使它完全生成),但不知道如何命名我的元素

<input type='hidden' name='inputradio[inputid]' value='1'>
<input type='hidden' name='inputradio[inputoutputtype]' value='radio'>
<input type='radio' name='inputradio[output]' value='Radio answer 1'>

<input type='hidden' name='inputradio[inputid]' value='2'>
<input type='hidden' name='inputradio[inputoutputtype]' value='radio'>
<input type='radio' name='inputradio[output]' value='Radio answer 2'>

<input type='hidden' name='inputtext1[inputid]' value='3'>
<input type='hidden' name='inputtext1[inputoutputtype]' value='text'>
<input type='text' name='inputtext1[output]' value='Text answer 1'>

<input type='hidden' name='inputtext2[inputid]' value='4'>
<input type='hidden' name='inputtext2[inputoutputtype]' value='text'>
<input type='text' name='inputtext2[output]' value='Text answer 2'>

如果方向改变了,我应​​该更改这篇文章的标题吗?

由于 ç

1 个答案:

答案 0 :(得分:0)

$ _POST中的条目只有两个属性,键和值。我不知道你的示例阵列在哪里,但它并没有像那样工作。因此,如果我有一个全部共享相同名称的单选按钮组,我将获得name-&gt;值对。

如果我创建了以下表单,并且我在单选按钮组中以值a提交了它:

<form method="POST" >
    <input type="text" name="textbox" value="test"><br/>
    a.<input type="radio" name="rd" value="a"><br/>
    b.<input type="radio" name="rd" value="b"><br/>
    c.<input type="radio" name="rd" value="c"><br/>
    <input type="submit" value="submit">
</form>

我的$ _POST将包含以下值:

Array
(
    [textbox] => test
    [rd] => a
)

如果我试图单步执行我的数组,我会这样做:

for ($_POST as $key->$value) {
    echo $key . " = " . $value . "\n";
}

哪个会给我以下输出:

textbox = test
rd = a

你能告诉我你要解决的问题是什么,因为从某些其他语言或框架的角度来看,你似乎正在接近这个问题,或者你可能希望在PHP中使用其他一些不是$ _POST?