2009-10-16 24 views
11

Tôi có một hình thức rất lớn (đối với một CMS nội bộ) được bao gồm bởi một số phần, một số trong số đó là tùy chọn một số trong số đó là bắt buộc. Tất cả đều dưới hình thức humungous (nó phải như thế này, không ajax, không có cách nào khác :-()

Vì theo cách Dilbertesque mọi thứ thay đổi mỗi giây tôi đã tự hỏi liệu có cách đơn giản nào để nhóm lại $ dữ liệu _POST, tôi có nghĩa là gửi POST như thế này:

$_POST['form1']['datax']

hoặc để lấy dữ liệu từ phía máy chủ một cách dễ dàng, và bằng cách dễ dàng Ý tôi là withouth phải expressily khai báo:

$array1 = array($_POST['datax'],$_POST['datay'],...);

$array2 = array($_POST['dataalpha'],$_POST['dataomega'],...);

vì có khoảng 60 trường.

Tôi hy vọng tôi đã có thể giải thích nổi này và như mọi khi thank you very much ..

Trả lời

24

Nếu bạn cung cấp cho các yếu tố đầu vào của bạn tên mảng như thế nào, họ đến trong mảng PHP $_POST (hoặc $ _GET) như một mảng:

<input type="text" name="foo[]" value="a"/> 
<input type="text" name="foo[]" value="b" /> 
<input type="text" name="foo[]" value="c" /> 
<input type="text" name="foo[bar]" value="d" /> 
<input type="text" name="foo[baz][]" value="e" /> 
<input type="text" name="foo[baz][]" value="f" /> 

Goes to:

print_r($_POST) 
foo => array (
    0 => a 
    1 => b 
    2 => c 
    bar => d 
    baz => array(
     0 => e 
     1 => f 
    ) 
) 
+0

Cảm ơn bạn, hoàn toàn quên mất điều này – 0plus1

+0

Tôi không bao giờ biết bạn có thể làm điều này! Tuyệt quá! – Psytronic

+0

Ngoài ra, từ những gì tôi có thể nhớ, bạn có thể nhập một cái gì đó giữa các dấu ngoặc vuông và nó sẽ trở thành chỉ mục cho mảng đó! – alex

2

Sử dụng dấu ngoặc vuông sau tên đầu vào sẽ gây ra nó để được nhóm lại trong PHP:

<input name="foo[]" type="text" value="1" /> 
<input name="foo[]" type="text" value="2" /> 

Bạn cũng có thể làm cho một mảng kết hợp:

<input name="foo[bar]" type="text" /> 

tôi nghĩ rằng mảng đa chiều cũng sẽ làm việc, nhưng tôi không chắc chắn nếu tôi đã thực sự cố gắng đó.

Chỉnh sửa: Đây là điều tương tự answered in the PHP FAQ.

4

Nếu bạn đặt tên cho đầu vào của mình đúng cách, bạn có thể làm điều đó. Ví dụ:

<input type="text" name="textInput[]" /> 
<input type="text" name="textInput[]" /> 

Điều đó sẽ điền một mảng vào $ _POST có tên textInput. Đó là:

$_POST['textInput'][0] == "whatever the first was set to be" 
$_POST['textInput'][1] == "whatever the second was set to be" 
1

bạn có thể sử dụng các trường mẫu của bạn như thế này:

<input type="text" name="form1['datax']"/> 
Các vấn đề liên quan