2014-07-16 32 views
0

我有一個從數據庫中生成的複選框和文本框的表。當我檢查3個複選框中的2個並在3個文本框中輸入2個。複選框陣列有2種元素和文本框數組3.我試圖用array_filter,但它不工作或東西...無法找出這是什麼問題循環也array_filter也許很有趣

$textbox_array=array_filter($_POST['text']); 
$checkbox_array = $_POST['check']; 
    for ($i = 0; $i < count($checkbox_array); $i++) { 
     $textbox = $textbox_array[$i]; 
     $checkbox = $checkbox_array[$i]; 

     echo $textbox; 
     echo '-'; 
     echo $checkbox; 
    } 

我檢查複選框9和10,並把值1和2

這就是我得到的:1-9-10 我應該得到:1-2-9-10

請幫助我。

+1

未選中複選框未在數據後發送,這是預期的行爲。如果由於某種原因,你需要他們發送,請看這裏:http://stackoverflow.com/questions/1809494/post-the-checkboxes-that-are-unchecked – Steve

+0

我不需要他們發送也不需要空的文本框被髮送。 – Foogley

回答

1

您的問題是與array_filter() ->Array keys are preserved

需要調用array_values()重置數組的鍵 - >array_values() returns all the values from the array and indexes the array numerically

$textbox_array=array_filter($_POST['text']);   
$textbox_array=array_values($textbox_array); 
$checkbox_array = $_POST['check']; 
    for ($i = 0; $i < count($checkbox_array); $i++) { 
     $textbox = $textbox_array[$i]; 
     $checkbox = $checkbox_array[$i]; 

     echo $textbox; 
     echo '-'; 
     echo $checkbox; 
    } 
+0

非常感謝!我的天啊。我的頭爆炸了好幾次。 :d – Foogley

1

問題是$ textbox_array與$ checkbox_array沒有相同的數組鍵。

一種修復方法是重置$ textbox_array的數組鍵。

而不是

$textbox_array=array_filter($_POST['text']); 

嘗試

$textbox_array=array_values(array_filter($_POST['text'])); 
+0

也謝謝!謝謝!謝謝!謝謝! – Foogley

+0

@詹姆斯看起來像我們相隔3秒,相同的答案。 +1 – Sean