Function ในภาษา PHP มาอยู่ 4 ชนิดคือ
1.ฟังก์ชั่นภายใน (invoking a function)
2.ฟังก์ชั่นที่สร้างขึ้นมาเอง (creating a function)
3.ฟังก์ชั่นซ้อนฟังก์ชั่น (nesting function)
4.ฟังก์ชั่นเรียกตัวเอง (recursive function)
1. ฟังก์ชั่นภายใน
เป็นฟังก์ชั่นพื้นฐานที่มากับ php มีราวๆ พันกว่าฟังก์ชั่น ซึ่งจะครอบคลุมการทำงานพื้นฐา่นทั้งหมดของการเขียนโปรแกรม PHP จนบางครั้ง เราสามารถเขียนโปรแกรมที่ทำงานได้จริงโดยไม่จำเป็นต้องเขียนฟังก์ชั่นเพิ่มเติมเลยแม้แต่ฟังก์ชั่นเดียว เหมือนที่ผมเคยได้ยินมาว่า
ตัวอย่างฟังก์ชั่นภายใน ผมขอยกตัวอย่างฟังก์ชั่น pow() ถ้าหากเปิดดู help จะเขียนเป็นลักษณะนี้
number pow ( number $base, number $exp )
number คือ ค่าที่ฟังก์ชั่นนี้ส่งกลับออกมา (return) ซึ่งเดี๋ยวเราค่อยมาอธิบายกัน
pow คือ ชื่อฟังก์ชั่น
(number $base, number $exp) คือ ค่าที่ต้องส่งให้ฟังก์ชั่นนี้ โดย
number หมายถึงชนิดของค่า (datatype) ที่ต้องส่งไปให้
ตัวอย่าง
1 <?php
2 echo pow(5,2); // พิมพ์ค่า 5 ยกกำลัง 2 ออกทางหน้าจอเลย
3 echo "<br />";
4 echo "ผลลัพท์ของ 5 ยกกำลัง 2 คือ " . pow(5,2);
5 ?>
2.ฟังก์ชั่นที่สร้างขึ้นมาเอง
เป็นฟังก์ชั่นที่สร้างขึ้นมาเอง เพื่อให้ทำงานนอกเหนือจากฟังชั่นที่มีอยู่ใน PHP หรือเราต้องการให้โปรแกรมทำงานตรงกับความต้องการของเรา
ตัวอย่าง
1<?php
2 function cmdevhub() {
3 echo "welcome to cmdevhub";
4 }
5
6 // เราสามารถเรียกฟังก์ชั่นได้โดยเรียกจากชื่อฟังก์ชั่น
7
8 cmdevhub(); // พิมพ์ welcome to cmdevhub
9 ?>
3.ฟังก์ชั่นซ้อนฟังก์ชั้น (Nesting Function)
ตัวอย่าง
1 <?php
2 function cal_tax ($price, $tax) {
3 function cal_vat ($total) {
4 return $total * 0.07;
5 }
6 $price += $price * $tax;
7 echo "จำนวนเงินทั้งหมดหลังรวมภาษี " . $price . " หลังรวมภาษีมูลค่าเพิ่ม " . ($price + cal_vat($price));
8 }
9 cal_tax(1500, 0.1); // ผลลัพธ์ 1650 , 1765.5
10 echo "<br />";
11 echo cal_vat(100); // ผลลัพธ์ 7
12 ?>
4.ฟังก์ชั่นเรียกตัวเอง (Recursive Function)
ฟังก์ชั่นเรียกตัวเอง ใช้สำหรับทำงานซ้ำๆ กันโดยที่เราไม่รู้จำนวนรอบในการทำงาน โดยจะมีจุดสิ้นสุดการทำงานอยู่ในฟังก์ชั่นเองอยู่แล้ว เพื่อให้ฟังก์ชั่นหยุดการทำงาน การเขียนฟังก์ชั่นแบบเรียกตัวเอง จะลดระยะเวลาในการเขียนโปรแกรมไปได้อย่างมาก แต่ปัญหาคือการออกแบบและเขียนได้ยากมาก ทำให้ไม่ค่อยได้เห็นคนเขียนฟังก์ชั่นแบบนี้กันเท่าไหร่
ตัวอย่าง
1<?php
2 function fibo($num) {
3 if ($num == 1 || $num == 2) {
4 return 1;
5 }
6 else {
7 return fibo($num - 1) + fibo($num - 2);
8 }
9 }
10
11 echo fibo(20);
12 ?>

ไม่มีความคิดเห็น:
แสดงความคิดเห็น