การใช้ while loop แทน foreach

ในการทำงานกับ array ถ้าในบางปัญหาเราอาจพบว่าการเขียนด้วย while loop จะง่ายกว่าการเขียน foreach(แน่นอนการทำงานแบบวน loop 99% ถ้าเขียนด้วย foreach จะเหมาะสมกว่า) แต่ในบางกรณีเราอาจไม่อยากใช้ foreach ในการทำงานแล้ว loop อะไรล่ะที่จะมาตอบโจทย์ได้ดีที่สุด

ถ้าทำงานกับ index array สิ่งที่เราเลือกต้องเป็น for อย่างไม่ต้องสงสัย แต่ถ้าต้องการทำงานกับ Associated Array(เป็น array ที่มี key เป็นอะไรก็ได้ตามใจฉัน) ล่ะ จะทำยังไงดีเพราะไม่มี key 0,1,2,… ให้ใช้งานแบบ Indexed Array คราวนี้จะแก้โจทย์นี้ยังไงกันดี

ก่อนอื่นมาวิเคราะห์กันก่อนว่า foreach มีข้อดีอะไรบ้าง

  1. ไม่ต้องระบุรอบที่ชัดเจนเหมือนกับ for loop
  2. ในแต่ละรอบจะสามารถเข้าถึง Value และ Key ของ Array นั้นๆได้

ดังนั้น ถ้าวิเคราะห์จากข้อที่ 1 เราคงต้องเลือก loop ที่ไม่จำเป็นต้องระบุรอบให้ชัดเจนอย่าง while หรือ do-while มาใช้ และข้อที่ 2 เราก็คงจะต้องมี function ที่สามารถดึง Value และ Key ของสมาชิกในรอบ Array ปัจจุบันได้ ซึ่งคำตอบของชื่อ function ที่ว่านี้ก็คือ current และ key

  • current() จะเป็นการเอาสมาชิกตัวปัจจุบันเอามาแสดงผล
  • key() จะเป็นการเอา key ของสมาชิกตัวปัจจุบันออกมาแสดงผล
  • next() จะเป็น function สำหรับเลื่อน pointer ไปยังสมาชิกตัวถัดไป

ดังนั้น code ที่ได้หน้าตาจะออกมาเป็นแบบนี้

ในแต่ละรอบจะทำการดึงค่า current(อย่าลืมใส่ parameter ด้วยนะ) ออกมา ถ้า current ยังคงมีค่าอยู่ก็จะวน loop ไปเรื่อยๆ เลยต้องมี next($arr) เพื่อเลื่อนไปยังสมาชิกตัวถัดไป

ที่สำคัญย้ำกันอีกครั้งว่า ในทุกๆ function ไม่ว่าจะเป็น current, key หรือ next ต้องใส่ parameter ที่เป็น Array เข้าไปด้วยหวังว่าคงจะได้เอาเทคนิคนี้ไปลองใช้กันบ้างจะได้เข้าใจการทำงานของ foreach กันมากขึ้น

รับเขียนโปรแกรมและสอนเขียนโปรแกรมด้วย PHP
ติดต่อสอบถามรายละเอียดเพิ่มเติมได้ที่ 062-419-9498
หรือ E-mail: training@irobust.co.th

Leave a Reply

Your email address will not be published. Required fields are marked *