2015-01-20 77 views
0

我有一個表單,可以通過單擊按鈕動態添加輸入。這些輸入的名稱/ ID是爲了利用PHP中的數組而設置的(閱讀關於這個技巧),但我不喜歡這種方法,因爲它只是感覺不對,因爲我想這樣做,我原本以爲的,但當我嘗試時遇到問題。我可以使用一些指導,因爲我過度思考這個問題。這是我目前所面對的...通過表單輸入循環的更好方法?

HTML

<input name="specs[1][number]" id="specs[1][number]" type="text" placeholder="Specs..." /> 

PHP

$specCounter = count($_POST[specs]); 

for ($i = 1; $i <= $specCounter; $i++) { 

    echo '<li>' . $_POST[specs][$i][number] . '</li>'; 

}; 

正如你所看到的,這是很簡單的;我有一個稱爲規格的數組,輸入的值最終會放入數字槽中。

但我原本想,是這樣的:

HTML

<input name="specs1" id="specs1" type="text" placeholder="Specs..." /> 
<input name="specs2" id="specs2" type="text" placeholder="Specs..." /> 

我在通過這些在PHP循環的問題,因爲我不知道該怎麼獲得這些輸入的個性化......

PHP

var myTotal = 'total inputs that have specs in the name/id'; 

for (var i = 1; i < myTotal; i++) { 
    echo $_POST['specs' . i]; 
}; 

在寫這篇文章的時候,我明白了,也許我應該探索正則表達式,但也許不是?任何幫助表示讚賞。

+0

要得到你會使用ummm計數...'count()'。我會使用'foreach()'循環。 – AbraCadaver 2015-01-20 21:49:48

+2

但是你的第一種使用數組的方式是我會走的路,儘管只是簡單地使用'spec [1]'等等...... – AbraCadaver 2015-01-20 21:51:11

+0

更好地編寫'$ _POST [「specs」] [$ i] [「number」]'或'$ _POST ['specs'] [$ i] ['number']''比'$ _POST [specs] [$ i] [number]' – KyleK 2015-01-20 22:00:26

回答

2
$i = 1; 
while(isset($_POST['specs'.$i])) 
{ 
    echo $_POST['specs'.$i]; 
    $i++; 
} 

也是另一種方式來把這個:

for($i=1; isset($_POST['specs'.$i]); $i++) 
{ 
    echo $_POST['specs'.$i]; 
} 

無論你喜歡

或者,如果你的號碼是不連續的:

foreach($_POST as $key => $value) { 
    if(substr($key) === 'specs') { 
     echo $value; 
    } 
} 
+0

更短(whileset($ _ POST ['specs'。$ i ])) – KyleK 2015-01-20 21:52:59

+0

非常感謝。更新了答案 – 2015-01-20 21:54:01

+1

或for for:for($ i = 1; isset($ _ POST ['specs'。$ i]); $ i ++)echo $ _POST ['specs'。$ i]; – KyleK 2015-01-20 21:54:53

1

這是可能做到這一點:

foreach($_POST as $key => $value) { 
    if(substr($key) === 'specs') { 
     echo $value; 
    } 
} 
+0

這很好,因爲它承認我在名稱/ ID中查找特定文本的意圖。 – Slime 2015-01-20 22:02:13

0

也許你想使用foreach代替for

foreach($_POST[specs] as $spec) { 
    echo '<li>' . $spec['number'] . '</li>'; 
} 
0

使用數組的第一種方法通常是首選。我想,雖然它簡化:

HTML

<input name="specs[1]" type="text"..." /> 
<input name="specs[2]" type="text"..." /> 

PHP

foreach($_POST['specs'] as $key => $val) { 
    echo "specs $key is $val"; 
} 

除非你需要的時候,你甚至不必指定索引,它們將被創建automagically:

<input name="specs[]" type="text"..." /> 
<input name="specs[]" type="text"..." /> 
+0

他確實知道'[]'變種。閱讀原文。 – 2015-01-20 21:54:34