นี่คือสิ่งที่ฉันคิดออก:
การส่งฟิลด์ฟอร์มที่มีหลายค่าเช่นการส่งอาร์เรย์ผ่าน GET / POST สามารถทำได้หลายวิธีเนื่องจากมาตรฐานไม่จำเป็นต้องสะกดออกมา
วิธีที่เป็นไปได้สามวิธีในการส่งเขตข้อมูลหรืออาร์เรย์หลายค่าคือ:
?cars[]=Saab&cars[]=Audi
(วิธีที่ดีที่สุด - PHP อ่านสิ่งนี้ในอาร์เรย์)
?cars=Saab&cars=Audi
(วิธีที่ไม่ดี - PHP จะบันทึกค่าล่าสุดเท่านั้น)
?cars=Saab,Audi
(ยังไม่ได้ลองสิ่งนี้)
ตัวอย่างแบบฟอร์ม
ในแบบฟอร์มเขตข้อมูลหลายมูลค่าอาจจะใช้รูปแบบของการเลือกชุดกล่องหลาย :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(หมายเหตุ: ในกรณีนี้มันเป็นสิ่งสำคัญที่จะตั้งชื่อตัวควบคุมที่เลือกsome_name[]
เพื่อให้ vars คำขอที่เป็นผลลัพธ์จะถูกลงทะเบียนเป็นอาร์เรย์โดย PHP)
... หรือฟิลด์ที่ซ่อนอยู่หลายรายการที่มีชื่อเดียวกัน :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
หมายเหตุ:การใช้field[]
สำหรับค่าหลายค่ามีการจัดทำเอกสารไม่ดีจริง ๆ ฉันไม่เห็นการกล่าวถึงในส่วนของคีย์ที่มีค่าหลายค่าในสตริงการสืบค้น - Wikipediaหรือในเอกสาร W3C ที่เกี่ยวข้องกับอินพุตแบบเลือกได้หลายแบบ
UPDATE
ในฐานะที่เป็นผู้แสดงความคิดเห็นได้ชี้ให้เห็นว่านี่เป็นกรอบเฉพาะมาก ตัวอย่างบางส่วน:
สตริงข้อความค้นหา:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Rails:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
เชิงมุม:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
( การสนทนาเชิงมุม)
ดูความคิดเห็นสำหรับตัวอย่างในnode.js , Wordpress , ASP.net
การรักษาลำดับ:
อีกสิ่งหนึ่งที่ควรพิจารณาคือถ้าคุณต้องการรักษาลำดับของรายการของคุณ (เช่นอาร์เรย์เป็นรายการที่สั่งซื้อ) คุณจะมีตัวเลือกเพียงตัวเดียวเท่านั้นซึ่งจะส่งรายการค่าที่คั่นและแปลงเป็น อาร์เรย์ด้วยตัวคุณเอง