2015-12-22 60 views
0

我有這個頁面的會後到我的PHP頁面和後是會到達這樣的:

namexxxxxxx= <name> 
stringidxxxxxxxx= <stringid> 

的「XXXXXX」是一個隨機數,但相同數量這兩個鍵。 所以我在做什麼:

$keys= array_keys($_POST); 
$idNumber= substr($keys[0], 4); 

$name= $_POST["name".$idNumber]; 
$stringId= $_POST["stringId".$idNumber]; 

這樣我可以很容易地得到值。現在是困難的部分(至少對我來說): 帖子來自用戶可以從列表中的許多項目中進行選擇的頁面,並且密鑰具有數字的原因是用戶可以選擇與他想要。 所以我們可以說,他選擇了3個項目,所以我必須處理一個帖子是這樣的:

nameXXXXX: name1; 
stringIdxxxx: stringId1; 

nameXXXXX: name2; 
stringIdxxxx: stringId2; 

nameXXXXX: name2; 
stringIdxxxx: stringId2; 

那麼,如何才能讓所有的不同的數據和處理它的每一個作爲首先提取後的密鑰一? 謝謝!

+1

將此重構爲一種理智的POST格式不是一種選擇...? 'item [1] [name] = ...&item [1] [id] = ...&item [2] [name] = ..' – deceze

+0

@deceze已經與Shailesh的回答合作了。但非常感謝你的時間兄弟=] –

回答

1
$keys= array_keys($_POST); 
for($i=0;$i<count($keys);$i++) 
{ 
    $idNumber= substr($keys[$i], 4); 

    $name= $_POST["name".$idNumber]; 
    $stringId= $_POST["stringId".$idNumber]; 
} 

使用循環可以迭代所有數組元素並獲取值。

+1

非常感謝你= D。這個竅門! –

+0

這工作,但它返回2個結果爲每個數字(名稱和stringId),在第一個返回我可以設法獲取兩個,但循環返回第二,無論如何,有沒有辦法跳過每個結果的第二個值? –

2

使用[]符號:

<input name="name[]" value="1" /> 
<input name="name[]" value="2" /> 
<input name="name[]" value="3" /> 

$_POST['name']之後將是一個數組,含有值[1, 2, 3]

此外更可以定義索引:

<input name="name[200]" value="1" /> 
<input name="name[400]" value="2" /> 
<input name="name[700]" value="3" /> 

$_POST['name']之後將是一個數組,含有值[200 => 1, 400 => 2, 700 => 3]

+0

但是輸入是dinamically生成的,我不知道用戶將選擇多少和順序。 –

+0

字段的順序與它們在窗體上顯示的順序相同。有多少?領域? 'sizeof($ _ POST ['name'])'會給你一些字段。 –