วันนี้มาดูเทคนิคการใช้งานตัวแปรของ php กันหน่อยนะครับ เพราะว่า php สามารถที่จะนำค่าของตัวแปรตัวหนึ่ง มาใช้เป็นชื่อให้กับ ตัวแปรอีกตัวหนึ่งได้ มาลองดูตัวอย่างการใช้งานกันหน่อยดีกว่า อาจจะมีประโยชน์บ้างก็ได้ หรือจะรู้ไว้เฉยๆ ก็ไม่น่าจะเสียหายอะไร
ตัวอย่าง
1 2 3 4 5 6 7 8 9 10 | <?php $test1 = "new_value"; $new_value = "New Value"; print $new_value."<br>"; // เรียกใช้ตัวแปรแบบปกติ print $$test1."<br>"; // เรียกใช้ตัวแปรโดยใช้ค่าจากตัวแปรชื่อ $test1 มาเป็นชื่อของตัวแปร ?> |
หมายเหตุ เราไม่สามารถอ้างชื่อตัวแปร แบบ $new$test1 แบบนี้ไม่ได้นะครับเช่น
1 2 3 4 5 6 7 8 9 | <?php $test1 = "value"; $new_value = "New Value"; print $new$test1; // แบบนี้ใช้ไม่ได้นะครับ เราจะต้องกำหนดให้ $test1 = "new_value" เท่านั้นและเวลาเรียกใช้ก็จะต้องเรียก โดยใช้ $$test1 เท่านั้น ?> |
ต่อไปมาดูตัวอย่างการใช้งานจริงๆ ดีกว่าว่าเราจะสามารถเอามาใช้งานตรงไหนได้บ้าง
test1.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-874"> </head> <body> <form name="form1" method="post" action="test2.php"> <?php for($i=0;$i<10;$i++){ // ทำการวนลูปสร้าง input ขึ้นมา 10 อัน print "<input type='text' name='textfield".$i."'><br>"; } ?> <input type="submit" name="Submit" value="Submit"> </form> </body> </html> |
test2.php
1 2 3 4 5 6 7 8 9 | <?php for($i=0;$i<10;$i++){ // ทำการวนลูปเพื่อแสดงค่าของ input ที่รับเข้ามา $fieldname = "textfield".$i; print $$fieldname."<br>"; } ?> |
แนะนำ
แต่วิธีการที่แนะนำมา อาจจะดูไม่ค่อยสวยเท่าไร ทางที่ดีผมว่าเราใช้ตัวแปรแบบ array จะดีกว่า ลองมาดูตัวอย่างการใช้งานตัวแปรแบบ array กันบ้างดีกว่า
test1.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-874"> </head> <body> <form name="form1" method="post" action="test2.php"> <?php for($i=0;$i<10;$i++){ // ทำการวนลูปสร้าง input ขึ้นมา 10 อัน print "<input type='text' name='textfield[]'><br>"; } ?> <input type="submit" name="Submit" value="Submit"> </form> </body> </html> |
test2.php
1 2 3 4 5 6 7 8 | <?php for($i=0;$i<10;$i++){ // ทำการวนลูปเพื่อแสดงค่าของ input ที่รับเข้ามา print $textfield[$i]."<br>"; } ?> |
จะเห็นว่าการใช้ตัวแปรแบบ array สามารถใช้งานได้ง่ายกว่าแบบแรกมาก อันนี้ก็ขึ้นอยู่กับว่าเวลาไหน เหมาะที่จะใช้ตัวแปรแบบไหนนะครับ เลือกวิธีการและวิธีแก้ปัญหาให้เหมาะสมกับงานนะครับ