2010-04-30 148 views
0

我有以下代碼: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會有幫助嗎?

謝謝,

荷馬。

+3

正如一個旁註,你也可以改變你的發佈值作爲'name =「q [1]」'through發送到'name =「q [8]」',那麼你可以直接使用這個數據作爲不同的數組,通過使用'$ _POST ['q']'。 //編輯:Gordon擊敗了我。 XD – pinkgothic 2010-04-30 11:00:46

回答

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/

+0

+1,這是一個好主意。 – pinkgothic 2010-04-30 11:03:42

+3

如果參考了服務器上的特定項目/問題,您還可以明確地設置陣列密鑰,例如, 'name =「q [4]」'等「。 – 2010-04-30 11:14:23

+0

@戈登 - 感謝你,但我不能使用你提到的「q []」功能而不改變整個方法。我已經有了一個數組中的信息。 – 2010-04-30 14:52:13

0

未經測試,它已經,因爲我最後一次使用PHP一段時間:

$q = array(); 
for ($i = 1; $i <= 8; ++$i) 
    $q[$i] = $_POST["q" . $i]; 
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; 
    } 
} 
+0

他可能有其他$ _POST變量,他不想在數組中加載。 – vladv 2010-04-30 10:59:07

3

是的,這是一個循環的時間。你可以使用foreach或while,它並不重要。

$i = 1; 
$q = array(); 
while($i < 9) { 
    $q[$i] = $_POST["q" . $i]; 
    $i += 1; 
} 
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; 
}