2009-12-30 59 views
7

Tôi tự hỏi trước khi tôi cố gắng refactor trang của tôi nếu nó có thể có một mảng đầu vào lồng nhau đôi trong html. Tôi có một nhóm 8x5 của các yếu tố trong một hình thức và nó sẽ được tốt đẹp cho tôi để có thể phân tích nó sử dụng một mảng của mảng ... cái gì đó nhưcó thể có các mảng thẻ đầu vào lồng nhau đôi trong html không?

<input type="text" name="list[][]" /><input type="checkbox" name="list[][]" /> 

và vân vân

+0

xử lý máy chủ của bạn là gì ngôn ngữ? Tôi tin rằng PHP có thể xử lý điều này. –

+0

Darrell: Tôi đang sử dụng php. Những gì im tự hỏi là nếu $ _POST ['elem_name'] sẽ là một mảng mảng hoặc nếu nó sẽ là rác. –

Trả lời

13

Bạn sẽ cần phải cung cấp các chỉ số thành phần đầu tiên của từng lĩnh vực hoặc khác không có gì để làm tổ được, và nếu nó đã làm việc, nó sẽ không giống như một lưới ở đầu bên kia:

hàng 1:

name="list[0][]" 

Row 2:

name="list[1][]" 

, vv

Cuối cùng, yo máy chủ ur cần hỗ trợ điều này khi PHP và Rails thực hiện việc này. Tôi không chắc chắn về các công nghệ máy chủ khác. Đối với một ví dụ, sau đây HTML khi được đưa lên PHP:

<form action="post.php" method="POST" accept-charset="utf-8"> 
    <input type="text" name="list[0][]" value="1" /> 
    <input type="text" name="list[0][]" value="2" /> 
    <input type="text" name="list[0][]" value="3" /> 

    <input type="text" name="list[1][]" value="4" /> 
    <input type="text" name="list[1][]" value="5" /> 
    <input type="text" name="list[1][]" value="6" /> 

    <input type="text" name="list[3][]" value="7" /> 
    <input type="text" name="list[3][]" value="8" /> 
    <input type="text" name="list[3][]" value="9" /> 

    <input type="submit" name="Send" value="Send" id="Send" /> 
</form> 

Nếu trong PHP đoạn mã sau tồn tại:

<?php print_r($_POST['list']); ?> 

Đầu ra là:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

    [1] => Array 
     (
      [0] => 4 
      [1] => 5 
      [2] => 6 
     ) 

    [3] => Array 
     (
      [0] => 7 
      [1] => 8 
      [2] => 9 
     ) 

) 
+0

Vì vậy, bạn chỉ cần cung cấp cho các trường tên có một số. Bạn đang giả mạo các chức năng, nó không thực sự được hỗ trợ bởi HTML4. – voyager

+0

vì vậy nếu tôi là gì? Tôi chỉ cố gắng làm cho nó một chút thanh lịch hơn để làm mã php của tôi ở đầu kia của biểu mẫu :) –

+1

Tôi đã cập nhật câu trả lời của mình để cung cấp một ví dụ trong PHP. @ voyager, tôi không thực sự giả mạo bất cứ điều gì kể từ khi các lĩnh vực là tên HTML4 hợp lệ và lên đến công nghệ máy chủ để hỗ trợ nó. –

0

HTML cho phép bạn để có một số đầu vào có cùng tên, được gửi tới máy chủ thông qua POST hoặc GET dưới dạng mảng được phân tách bằng dấu phẩy, hầu hết các ngôn ngữ phía máy chủ (tất cả?) đều nhận dạng dưới dạng mảng gốc.

Không có cách nào tạo ra một mảng đa chiều với HTML thuần túy mà không cần bạn tự mình cuộn một cái gì đó bằng javascript.

+0

PHP không nhận dạng các trường có cùng tên với một mảng. Trong thực tế, nó sẽ chỉ trả về giá trị được xác định cuối cùng. 'd = 1 & d = 2 & d = 3' khi được truy xuất bằng' $ _GET ['d'] 'sẽ trả về' "3" ' –

+0

@Doug Neiner: Tôi chưa bao giờ sử dụng PHP cho bất kỳ thứ gì lớn hơn' hello, world', vì vậy tôi cho rằng nó hoạt động như ASP, Python, Ruby và (tôi nghĩ) Perl. – voyager

Các vấn đề liên quan