2014-12-11 50 views
0

我還是一個新的PHP,我很難通過POST發送表單變量。 我使用jquery動態地添加具有相同名稱的新字段以及表單中的自動增量ID。用自動增量計數同名變量

在_POST我需要有一個循環來獲得這些變量,但我怎樣才能得到循環的變量?

我有這樣的事情:

$ID1_name = $_POST["ID1_name"]; 
$ID2_name = $_POST["ID2_name"]; 
$ID3_name = $_POST["ID3_name"]; 
$IDX_name = $_POST["IDX_name"]; 

$ID1_place = $_POST["ID1_place"]; 
$ID2_place = $_POST["ID2_place"]; 
$ID3_place = $_POST["ID3_place"]; 
$IDX_place = $_POST["IDX_place"]; 

可以有無限的變量具有相同名稱與和AI,我有大約10瓦爾這樣。

我該如何計算var的部分名稱? 或 有沒有更好的方法來獲得這些_POST?我正在使用For循環。

我正在使用相同的名稱並在數組中計數。它的工作,但我有3個領域與無線電和2複選框,並在數組中的所有相同名稱的變量合併。所以食物陣列中有來自現場的所有食物複選框的記錄。那有意義嗎?

因此,在一個$ ID1_place =字符串我可能有$ ID1_check =陣列

感謝您的幫助。我知道有一種簡單的方法,但是我認爲自從我找不到任何東西以後,我找錯了方向。

非常感謝。 關於

+0

讓jQuery將它序列化爲ID [1] [name] = foo&ID [1] [place] = bar &...';它會讓你的生活變得更加簡單。 – 2014-12-11 00:55:58

+0

只需創建一個分組名稱,以便在PHP中使用它時更容易管理它們,就像上面的註釋^ – Ghost 2014-12-11 01:03:11

+0

感謝傢伙們,我剛剛閱讀了Jquery序列化手冊,我將嘗試實現它。這聽起來是一種簡單而有效的方式。非常感謝。 – aoceano 2014-12-11 11:15:06

回答

0

有兩種方法我可以爲此考慮。或者你可以用元件的數量通過一個隱藏的元素與您的姓名,或者您可以使用preg_grepfunction匹配所有POST乏匹配正則表達式模式:

// Search keys: 
$ID_place_keys = preg_grep('/ID[0-9]+_place/', array_keys($_POST)); 

// Search values: 
$ID_places = preg_grep('/ID[0-9]+_place/', $_POST); 

// Get array of values matching keys: 
$ID_places = array_intersect_key($_POST, array_flip(preg_grep('/ID[0-9]+_place/', array_keys($_POST)))); 
// Gets a bit messy with all the array functions... 

這裏是一個URL來一個簡單的工作示例:

http://ideone.com/a9AhL6

+0

非常感謝您的幫助。我試過'preg_grep'函數。但它似乎只搜索數組內容,而不是var名稱。當我用你顯示的方式返回一個空數組。如果我只使用serch中的數字,它會返回包含數字的變量,在這種情況下會返回幾個不同的變量。 – aoceano 2014-12-11 12:18:01

+0

我設法使用隱藏字段,使用JQuery計算指定字段的數量。非常感謝。 preg_grep在其他代碼中很有用。沒有你的幫助,我不知道該找什麼。 – aoceano 2014-12-11 13:29:41

+0

對不起,我的'preg_grep'例子不好。你仍然可以將'preg_grep'與'array_keys'結合使用。我已經在我的答案中加入了一個示例 – Scopey 2014-12-11 20:09:27

0

你有沒有考慮,而不是發送大量的職位變數,只有兩個發送;所有的字段都是json編碼的?

例如:names: ["ID1", "ID2", "ID3"]places: ["ID1", "ID2", "ID3"]。要獲得像這樣的AJAX參數,你可以使用JSON.stringify()對已經使用的數組進行字符串化。編號:JSON.stringify()

然後在後端只是做$names = json_decode($_POST["names"])$places = json_decode($_POST["places"])

這樣你與人名和地名的ID-S的數組。你可以數它們,循環它們,做你需要的任何事情。

+1

非常感謝您的幫助。我沒有使用JSON.stringfy(),但將來我會確定使用它。我將改變發送數據的方式,JSON將是您的選擇。感謝幫助。 – aoceano 2014-12-11 13:31:43

+0

當然,告訴我你是否需要該解決方案的進一步幫助。 – ziGi 2014-12-12 01:22:05

+0

非常感謝您,爲您的時間和耐心提供幫助。 – aoceano 2014-12-12 14:50:08