使用带有多维数组的foreach

时间:2011-05-09 10:54:49

标签: php multidimensional-array

我目前正在从输入构建一个多维数组。像这样:(例子)

<form method=post action="testing.php">
<input name="response[0]['id']" type="hidden" value="<? echo $q1; ?>">
<input name="response[0]['answer']" type=text value=''>
<input name="response[1]['id']" type="hidden" value="<? echo $q2; ?>">
<input name="response[1]['answer']" type=text value=''>
<input name="response[2]['id']" type="hidden" value="<? echo $q3; ?>">
<input name="response[2]['answer']" type=text value=''>
<input name="response[3]['id']" type="hidden" value="<? echo $q4; ?>">
<input name="response[3]['answer']" type=text value=''>
<input type="submit" value="submit">
</form>

因此成功发布。但是我试图使用foreach来打印出值,但我错了。

编辑我的输出数组:

Array ( 
[0] => Array 
( 
['id'] => q1 
['answer'] => 1 
) 
[1] => Array 
( 
['id'] => q2 
['answer'] => 2 
) 
[2] => Array 
( 
['id'] => q3 
['answer'] => 3 
) 
[3] => Array 
( 
['id'] => q4 
['answer'] => 4 
)
) 

有人可以解释我如何用foreach甚至更好的方式提取值?

非常感谢

3 个答案:

答案 0 :(得分:3)

foreach ($_POST['response'] as $response) {
  echo $response['id'];
  echo $response['answer'];
}

这应该这样做。

答案 1 :(得分:0)

这是你想要做的吗?

<?php foreach($response as $entry): ?>
    <input name="<?php echo $entry['id']; ?>" />
    <input name="<?php echo $entry['answer']; ?>" />
<?php endforeach; ?>

并且按照上面的方式构建输入

答案 2 :(得分:0)

修改
请注意,(')是名称的一部分!要么更改HTML(response[0][id]),要么执行以下操作。

传入的数组应如下所示:

$response = array(
    0 => array("'id'" => ..., "'answer'" => ...),
    1 => array("'id'" => ..., "'answer'" => ...),
    2 => array("'id'" => ..., "'answer'" => ...),
    3 => array("'id'" => ..., "'answer'" => ...),
);

因此,

foreach ($response as $resp) {
    print 'ID=' . $resp["'id'"] . ', answer=' . $resp["'answer'"];
}

问题: <input name="response[0]['answer']" />会产生一个以'answer'为关键字的数组。即,带有的文字字符串,而不仅仅是answer。您应该将HTML更改为<input name="response[0][answer]" />以避免混淆。 我将尝试查看这是否是记录在案的行为。此行为显示为in the docs