Đây là những gì tôi đã tìm ra:
Gửi các trường biểu mẫu đa giá trị, tức là gửi mảng thông qua các tệp GET / POST, có thể được thực hiện theo nhiều cách khác nhau, vì một tiêu chuẩn không nhất thiết phải được nêu ra.
Ba cách có thể để gửi các trường hoặc mảng đa giá trị sẽ là:
?cars[]=Saab&cars[]=Audi
(Cách tốt nhất- PHP đọc điều này thành một mảng)
?cars=Saab&cars=Audi
(Cách xấu- PHP sẽ chỉ đăng ký giá trị cuối cùng)
?cars=Saab,Audi
(Chưa thử cái này)
Mẫu ví dụ
Trên một biểu mẫu, các trường đa giá trị có thể ở dạng hộp chọn được đặt thành nhiều :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(LƯU Ý: Trong trường hợp này, điều quan trọng là đặt tên cho điều khiển chọn some_name[]
, để các vars yêu cầu kết quả sẽ được đăng ký dưới dạng một mảng bởi PHP)
... hoặc dưới dạng nhiều trường ẩn có cùng tên :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
LƯU Ý: Sử dụng field[]
cho nhiều giá trị thực sự là tài liệu kém. Tôi không thấy bất kỳ đề cập nào về nó trong phần về các khóa đa giá trị trong chuỗi Truy vấn - Wikipedia hoặc trong các tài liệu W3C liên quan đến các đầu vào đa lựa chọn.
CẬP NHẬT
Như các nhà bình luận đã chỉ ra, đây là rất nhiều khung cụ thể. Vài ví dụ:
Chuỗi truy vấn:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Đường ray:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Góc cạnh:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
( Thảo luận góc cạnh )
Xem bình luận cho các ví dụ trong node.js , Wordpress , ASP.net
Duy trì trật tự:
Một điều nữa cần xem xét là nếu bạn cần duy trì thứ tự các mặt hàng của mình (tức là mảng dưới dạng danh sách được sắp xếp), bạn thực sự chỉ có một tùy chọn, đó là chuyển một danh sách các giá trị được phân tách và chuyển đổi rõ ràng thành một mảng chính mình.