PHP循环....需要一些建议

时间:2010-04-30 10:51:10

标签: php

我有以下代码:

$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会有帮助吗?

谢谢,

荷马。

5 个答案:

答案 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;
    }
}