我目前正在从输入构建一个多维数组。像这样:(例子)
<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甚至更好的方式提取值?
非常感谢答案 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。