我有以下代码:
$q1 = $_POST["q1"];
$q2 = $_POST["q2"];
$q3 = $_POST["q3"];
$q4 = $_POST["q4"];
$q5 = $_POST["q5"];
$q6 = $_POST["q6"];
$q7 = $_POST["q7"];
$q8 = $_POST["q8"];
目前,这是硬编码的,我需要每次手动更改它,我想使用变量,这样它不是手动过程。
是使用循环的情况,还是foreach?
如果我有信息$ q和数组中的q会有帮助吗?
谢谢,
荷马。
答案 0 :(得分:8)
考虑调整表单以使用数组表示法,例如
<ul>
<li><input name="q[]" /></li>
<li><input name="q[]" /></li>
<li><input name="q[]" /></li>
<li><input name="q[]" /></li>
...
</ul>
这会使$_POST['q']
包含一个数组,其中包含为'q'指定的所有输入值,然后可以使用foreach
轻松地迭代,如下所示:
foreach($_POST['q'] as $q) {
// do something with $q
}
请参阅http://www.johnrockefeller.net/html-input-forms-sending-in-an-array-in-php/
答案 1 :(得分:3)
是的,这是一个循环的时间。你可以使用foreach或while,它并不重要。
$i = 1;
$q = array();
while($i < 9) {
$q[$i] = $_POST["q" . $i];
$i += 1;
}
答案 2 :(得分:1)
1
$keys = array('q1', 'q2', 'q3', 'q5', 'q9');
$q = array();
foreach ( $keys as $key ) {
$q[$key] = isset($_POST[$key]) ? $_POST[$key] : null;
}
2
$keys = array('q1', 'q2', 'q3', 'q5', 'q9');
foreach ( $keys as $key ) {
$$key = isset($_POST[$key]) ? $_POST[$key] : null;
}
// in output you will have variables called $q1, $q2, $q3, ...
3
$amount = 8;
$q = array();
for ( $i = 1; $i <= $amount; ++$i ) {
$q[$i] = isset($_POST['q' . $i]) ? $_POST['q' . $i] : null;
}
答案 3 :(得分:0)
未经测试,自从我上次使用PHP以来已经有一段时间了:
$q = array();
for ($i = 1; $i <= 8; ++$i)
$q[$i] = $_POST["q" . $i];
答案 4 :(得分:0)
如果可以将POST数据保存到另一个阵列,请尝试以下代码:
// Random POST array
$_POST["q1"] = 1;
$_POST["q2"] = 2;
$_POST["q3"] = 3;
$_POST["q4"] = 4;
$_POST["q5"] = 5;
$_POST["q6"] = 6;
$_POST["q7"] = 7;
$_POST["q8"] = 8;
$array = Array( );
foreach ( $_POST as $value ) {
$array[ ] = $value;
}
如果您想将POST数据保存到更具体的变量中,则必须使用更复杂的代码。如果你想看到更多选项,可以编辑我的帖子。
修改强>
如果您只想使用以q
开头且以数字结尾的键,您可以使用以下代码:
$array = Array( );
foreach ( $_POST as $key => $value ) {
if ( preg_match( "/^[q]{1}\d$/", $key ) ) {
$array[ ] = $value;
}
}