เทคนิคการรับค่าจาก Input ชนิด Array
เทคนิคนี้คงต้องอาศัยความเข้าใจเกี่ยวกับ array และคำสั่ง foreach มาประยุกต์ใช้ก่อนละครับ
<?php
if (isset($_POST[submit])) { // ตรวจสอบว่ามาจากการ submit หรือไม่
print_r($_POST);
print_r($_FILES);
// text แบบ array
foreach($_POST[text] AS $i => $text) {
echo "value of text[$i]='$text'<br />";
}
// text แบบ array
foreach($_POST[num] AS $i => $text) {
echo "value of num[$i]='$text'<br />";
}
// file แบบ array
foreach($_FILES[file][tmp_name] AS $i => $file) {
if ($file != '') { // ตรวจสอบว่ามีการเลือกไฟล์มาหรือไม่
echo "value of file[$i][tmp_name]='$file'<br />";
echo "size of file[$i][size]='".$_FILES[file][size][$i]."' byte<br />";
}
}
}
?>
<form action="?" method="post" enctype="multipart/form-data">
<p>Input แบบ dynamic Array (ไม่ระบุ id ของ array)</p>
<p><input type="text" name="text[]" /></p>
<p><input type="text" name="text[]" /></p>
<p>Input แบบ Array (ระบุ id ของ array มาด้วย)</p>
<p><input type="text" name="num[0]" /></p>
<p><input type="text" name="num[1]" /></p>
<p>Input ชนิดไฟล์ แบบ dynamic Array (ไม่ระบุ id ของ array)</p>
<p><input type="file" name="file[]" /></p>
<p><input type="file" name="file[]" /></p>
<p><input type="submit" name="submit" value="Submit" /></p>
</form>
เริ่มต้นก็มาดูกันก่อนเลย คำสั่ง print_r() จะสามารถบอกได้ว่า มีอะไรบ้างหนอที่ส่งมาบ้าง เพื่อดูผลลัพท์ และ รูปแบบ เพื่อมาใช้งานกับ Array ได้
text จะถูกส่งมาในรูปแอเรย์แบบที่ไม่ระบุอันดับ ซึ่งเราสามารถอ่านค่าที่ส่งมาได้จาก foreach ซึ่งอันดับสามารถอ่านได้จากตัวแปร $i ในโค้ดครับ
ส่วนค่าต่างๆ สามารถอ่านได้จากตัวแปร $text หรือ $num หรือ $file ที่เป็นตัวหนาครับ ในส่วนของ input ชนิด file ซึ่งยังมี property อื่นๆ ที่สามารถอ่านได้อีกก็สามารถอ่านได้จากตัวแปร $_FILE[file][size][$i] ครับ
จากตัวอย่างการส่งไฟล์ ถึงแม้ว่าเราจะมี Input หลายอัน แต่เราสามารถที่จะอ่านค่าจาก Input ที่เลือกไฟล์ไว้เท่านั้นได้ด้วยการตรวจสอบตัวแปร $file เพื่อดูค่าว่างครับ