บทที่ 5 ฟังก์ชันของ PHP การประกาศฟังก์ชัน { Statement; } function ชื่อฟังก์ชัน([อาร์กิวเมนต์1, อาร์กิวเมนต์2, … ]) { Statement; }
echo “****************************** <br>”; } function asterisk() { echo “****************************** <br>”; }
การใช้งานฟังก์ชันโดยไม่มีการส่งผ่านค่า function_nopass1.php <? function asterisk() { echo "****************************** <br>"; } asterisk(); echo "My name is Charnchai <br>" ; echo "My surname is Supaartagorn <br>"; echo "Hello everybody <br>"; ?>
การส่งผ่านค่าให้แก่ฟังก์ชัน function_pass1.php <? function asterisk($no) { $sign = ""; for($count=1; $count<=$no; $count++) $sign = $sign."*"; } echo "$sign <br>"; asterisk(30); echo "My name is Charnchai <br>" ; echo "My surname is Supaartagorn <br>"; echo "Hello everybody <br>"; asterisk(20); ?>
function_pass2.php <? function show($message, $size) { echo "<H".$size.">"; echo "$message <br>"; echo "</H".$size.">"; } show("Hello How are you?",1); show("Good Bye",4); ?>
การคืนค่ากลับของฟังก์ชัน <? function cal_triangle($base,$height) { $area = 0.5*$base*$height; return $area; } echo "รูปสามเหลี่ยมมีความยาวฐานเท่ากับ 5 หน่วยและความสูงเท่ากับ 10 หน่วย <br>"; echo "สามเหลี่ยมรูปนี้จะมีพื้นที่เท่ากับ" .cal_triangle(5,10)." หน่วย"; ?>
ประเภทของตัวแปร และขอบเขตของตัวแปร ตัวแปร local คือตัวแปรที่มีขอบเขตการใช้งานภายในบริเวณใดบริเวณหนึ่งเท่านั้น เช่นมีขอบเขตการใช้งานเฉพาะภายในฟังก์ชันเท่านั้น ถ้ามีตัวแปรที่ใช้งานภายในฟังก์ชัน และใช้งานภายนอกเป็นชื่อตัวแปรเดียวกันเราจะถือว่าตัวแปร 2 ตัวนี้เป็นตัวแปรคนละตัวกัน ตัวแปร global คือตัวแปรที่มีขอบเขตการใช้งานทั่วทั้งโปรแกรม ไม่ว่าจะใช้ตัวแปรประเภทนี้บริเวณใดก็ตามทุกส่วนของโปรแกรมจะรู้จักตัวแปรตัวนี้ ในการประกาศให้ตัวแปรใดเป็นประเภท global เราจะใช้คำสั่ง global วางไว้หน้าชื่อตัวแปรที่ต้องการ
scope1.php <? function testvar() { $a = 20; echo "ตัวแปร \$a นี้อยู่ภายในฟังก์ชัน มีค่าเท่ากับ $a <br>"; } $a = 200; echo "ตัวแปร \$a นี้อยู่ภายนอกฟังก์ชัน มีค่าเท่ากับ $a <br>"; testvar(); $a++; echo "ตัวแปร \$a หลังจากมีการเพิ่มค่า จะมีค่าเท่ากับ $a "; ?>
scope2.php <? function testvar() { global $a; $a = 20; echo "ตัวแปร \$a นี้อยู่ภายในฟังก์ชัน มีค่าเท่ากับ $a <br>"; } $a = 200; echo "ตัวแปร \$a นี้อยู่ภายนอกฟังก์ชัน มีค่าเท่ากับ $a <br>"; testvar(); $a++; echo "ตัวแปร \$a หลังจากมีการเพิ่มค่า จะมีค่าเท่ากับ $a "; ?>
ประเภทของการส่งผ่านค่า การส่งผ่านด้วยค่าของตัวแปร (Pass by Value) การเปลี่ยนแปลงใดๆของค่าอาร์กิวเมนต์จะไม่มีผลต่อค่าของตัวแปรที่ส่งผ่านค่าไปยังฟังก์ชัน การส่งผ่านด้วยการอ้างอิงในหน่วยความจำ (Pass by Reference) การเปลี่ยนแปลงใดๆของค่าอาร์กิวเมนต์จะมีผลต่อค่าของตัวแปรที่ส่งผ่านค่าไปยังฟังก์ชัน โดยจะใช้สัญลักษณ์ & นำหน้าตัวแปรที่จะส่งผ่านไปยังฟังก์ชัน
pass_by_value.php <? function pass($val) { $val = $val + 10; return $val; } $value = 100; echo "สมมติค่าตัวแปร \$value มีค่าเท่ากับ $value <br>"; echo "ค่าของตัวแปร \$value ก่อนที่จะส่งผ่านค่าไปยังฟังก์ชันมีค่าเท่ากับ $value <br>"; pass($value); echo "ค่าของตัวแปร \$value หลังจากคืนค่ากลับจากฟังก์ชันมีค่าเท่ากับ $value <br ?>
pass_by_ref.php <? function pass($val) { $val = $val + 10; return $val; } $value = 100; echo "สมมติค่าตัวแปร \$value มีค่าเท่ากับ $value <br>"; echo "ค่าของตัวแปร \$value ก่อนที่จะส่งผ่านค่าไปยังฟังก์ชันมีค่าเท่ากับ $value <br>"; pass(&$value); echo "ค่าของตัวแปร \$value หลังจากคืนค่ากลับจากฟังก์ชันมีค่าเท่ากับ $value <br>"; ?>