2009-07-16 61 views
8

Tôi đang phân tích mã PHP của người khác và tôi đã nhận thấy rằng HTML đầu vào có nhiều lĩnh vực đầu vào ẩn với tên kết thúc bằng '[]', ví dụ:Sử dụng dấu ngoặc vuông trong ẩn đầu vào HTML các lĩnh vực

<input type="hidden" name="ORDER_VALUE[]" value="34" /> 
<input type="hidden" name="ORDER_VALUE[]" value="17" /> 

các PHP trang đó sẽ xử lý đầu vào này mua lại mỗi giá trị như thế này:

foreach ($_REQUEST["ORDER_VALUE"] as $order_value) { 
    /... 
} 

gì là '[]' sử dụng cho? Chỉ định rằng sẽ có nhiều trường nhập có cùng tên?

Trả lời

11

Có. Về cơ bản, PHP sẽ biết gắn tất cả các giá trị đó với cùng tên vào một mảng.

Điều này áp dụng cho tất cả các trường nhập, nhân tiện, không chỉ các trường được ẩn.

1

Hầu hết các thư viện xử lý biểu mẫu yêu cầu tác giả nêu rõ liệu họ có muốn xử lý một đoạn dữ liệu dưới dạng chuỗi hoặc một chuỗi các chuỗi không.

Các tác giả của PHP đã quyết định không nhất quán với phần còn lại của thế giới và yêu cầu HTML phải được tạo đặc biệt.

Đặt dấu ngoặc vuông ở cuối tên cho PHP biết coi nó là mảng dữ liệu.

14

Nó chuyển dữ liệu dưới dạng mảng sang PHP. Khi bạn có biểu mẫu HTML có cùng tên, nó sẽ thêm vào danh sách dấu phẩy như danh sách hộp kiểm. Dưới đây PHP có xử lý để chuyển đổi đó để một mảng PHP dựa trên [] như vậy:

Để kết quả của bạn gửi như một mảng để kịch bản PHP của bạn, bạn đặt tên cho, hoặc các yếu tố như thế này:

<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyArray[]" /> 

Lưu ý các dấu ngoặc vuông sau tên biến, đó là những gì làm cho nó trở thành một mảng. Bạn có thể nhóm các yếu tố vào các mảng khác nhau bằng cách gán cùng tên với các yếu tố khác nhau:

<input name="MyArray[]" /> 
<input name="MyArray[]" /> 
<input name="MyOtherArray[]" /> 
<input name="MyOtherArray[]" /> 

này tạo ra hai mảng, myArray và MyOtherArray, mà được gửi đến các kịch bản PHP. Nó cũng có thể gán các phím cụ thể để các mảng của bạn:

<input name="AnotherArray[]" /> 
<input name="AnotherArray[]" /> 
<input name="AnotherArray[email]" /> 
<input name="AnotherArray[phone]" /> 

http://us2.php.net/manual/en/faq.html.php

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