การสร้างและเรียกใช้ฟังก์ชั่น Function อาจารย์สุธาสินี  เส้นขาว
ความหมาย <ul><li>ฟังก์ชั่น ( Function )  หมายถึง กลุ่มของคำสั่งที่ถูกนำมารวบรวมไว้ด้วยกัน เพื่อให้สามารถเรียกใช้ได้อย่างสะ...
การประกาศฟังก์ชั่น <ul><li>มีรูปแบบดังนี้ </li></ul><ul><ul><li>ชื่อฟังก์ชั่น  :  เป็นชื่อที่ตั้งขึ้นสำหรับเรียกใช้ฟังก์ชั...
ตัวอย่างการสร้างฟังก์ชั่น ( 1 ) <ul><li>ตัวอย่างฟังก์ชั่นที่รับอาร์กิวเมนต์ </li></ul><ul><li><? </li></ul><ul><li>functio...
ตัวอย่างการสร้างฟังก์ชั่น (2) <ul><li>ตัวอย่างฟังก์ชั่นที่ไม่รับอาร์กิวเมนต์ </li></ul><ul><li><? </li></ul><ul><li>functi...
รายละเอียดการทำงานของฟังก์ชั่น <ul><li>ฟังก์ชั่นจัดเป็น  case insensitive  คือสามารถเรียกใช้ด้วยตัวพิมพ์ใหญ่หรือพิมพ์เล็กก...
รายละเอียดการทำงานของฟังก์ชั่น <ul><li>ผลลัพธ์ของโปรแกรมคือ </li></ul><ul><li>ในตัวอย่าง ตัวแปร  $xFunc  จะเก็บสตริงคำว่า ...
การส่งผ่านค่าให้แก่ฟังก์ชั่น <ul><li>บางฟังก์ชั่นอาจไม่จำเป็นต้องรับค่าใดๆจากโปรแกรมหลักก็สามารถทำงานและให้ผลลัพธ์ได้ เช่น...
การส่งผ่านด้วยค่า  ( Passing by Values ) <ul><li>เป็นวิธีการส่งผ่านค่าที่มักใช้โดยทั่วไป </li></ul><ul><li>คือ เมื่อใส่ตัว...
ตัวอย่างการส่งผ่านค่าของตัวแปร 1 <ul><li><? </li></ul><ul><li>$var  =  150; </li></ul><ul><li>$str  = &quot; A &quot; ; </...
ตัวอย่างการส่งผ่านค่าของตัวแปร 2 <ul><li><? </li></ul><ul><li>function mat ( $p1,$p2 ) { </li></ul><ul><li>$p1  =  $p1+$p2...
การส่งผ่านด้วยการอ้างอิง  ( Passing by Reference ) <ul><li>เมื่อใส่สัญลักษณ์  & (ampersand)  เข้าไปไว้หน้าอาร์กิวเมนต์ในขณ...
ตัวอย่างการส่งผ่านด้วยการอ้างอิง 1 <ul><li><? </li></ul><ul><li>$var  =  150; </li></ul><ul><li>$str  = &quot; A &quot; ; ...
ตัวอย่างการส่งผ่านด้วยการอ้างอิง 2 <ul><li><? </li></ul><ul><li>function mat ( &$p1,$p2 ) { </li></ul><ul><li>$p1  =  $p1+...
การกำหนดค่าเริ่มต้น ( default ) ให้กับอาร์กิวเมนต์ <ul><li>บางกรณีที่ต้องการสร้างฟังก์ชั่นโดยมรอาร์กิวเมนต์เป็นออปชั่น </l...
ตัวอย่างการกำหนดค่า  default  ให้อาร์กิวเมนต์ <ul><li>จากตัวอย่างฟังก์ชั่น 2   ถ้าเปลี่ยนมาเป็นการกำหนดค่า  default  ให้กั...
การคืนค่ามากกว่า  1  ค่า <ul><li>เมื่อต้องการใช้ฟังก์ชั่นคืนค่าให้มากกว่า  1  ค่า สามารถอาศัยคุณสมบัติฟังก์ชั่นใน  PHP  สา...
ตัวอย่างการคืนค่ามากกว่า  1  ค่า <ul><li><? </li></ul><ul><li>function calculator($x,$y){ </li></ul><ul><li>$a = $x+$y; </...
ขอบเขต  scope  ของตัวแปรและค่าคงที่ <ul><li>ตัวแปรที่ประกาศไว้ในฟังก์ชั่นใด จะเป็นที่รู้จักและเรียกใช้ฟังก์ชั่นนั้น ถึงแม้...
ขอบเขต  scope  ของตัวแปรและค่าคงที่ ( ต่อ ) <ul><li>จากตัวอย่าง ค่าของตัวแปร  $myName  ที่อยู่ภายในและภายนอกฟังก์ชั่นจะมีค...
ตัวอย่างคำสั่ง  global <ul><li><? </li></ul><ul><li>$myVar  =  500; </li></ul><ul><li>function TestVar () { </li></ul><ul>...
การสร้างตัวแปรแบบ  static <ul><li>โดยทั่วไปแล้วปกติตัวแปรที่เราประกาศไว้ภายในฟังก์ชั่นจะถูกทำลายไปหลังจากการทำงานของฟังก์ช...
ตัวอย่างฟังก์ชั่นที่ไม่ได้สร้างเป็น  static <ul><li><? </li></ul><ul><li>function testloop () { </li></ul><ul><li>$value  ...
ตัวอย่างฟังก์ชั่นที่สร้างเป็น  static <ul><li><? </li></ul><ul><li>function testloop () { </li></ul><ul><li>static $value ...
ฟังก์ชั่นที่เรียกตัวเอง  ( Recursive Function ) <ul><li>ฟังก์ชั่นใน  PHP  มีความสามารถในการเรียกตัวเอง  ( recursion )  ได้...
ตัวอย่างการทำ  Recursive Function <ul><li><? </li></ul><ul><li>function xx($a){ </li></ul><ul><li>$a = $a/2; </li></ul><ul...
ทดสอบ <ul><li>ให้สร้างฟังก์ชั่น  2  ฟังก์ชั่นโดยที่ มีการเรียกใช้ฟังก์ชั่นที่  2  ภายในฟังก์ชั่นที่  1 </li></ul><ul><li>ฟ...
 
Upcoming SlideShare
Loading in …5
×

power point.

896 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
896
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

power point.

  1. 1. การสร้างและเรียกใช้ฟังก์ชั่น Function อาจารย์สุธาสินี เส้นขาว
  2. 2. ความหมาย <ul><li>ฟังก์ชั่น ( Function ) หมายถึง กลุ่มของคำสั่งที่ถูกนำมารวบรวมไว้ด้วยกัน เพื่อให้สามารถเรียกใช้ได้อย่างสะดวกและเป็นระบบ </li></ul><ul><li>ฟังก์ชั่นใน PHP มี 2 แบบคือ </li></ul><ul><ul><li>การสร้างฟังก์ชั่นขึ้นมาใช้งานเอง เรียกว่า user-defined functions </li></ul></ul><ul><ul><li>ฟังก์ชั่นที่มีให้เรียกใช้อยู่แล้ว เรียกว่า built-in functions เช่น ฟังก์ชั่น chr() , substr() </li></ul></ul>
  3. 3. การประกาศฟังก์ชั่น <ul><li>มีรูปแบบดังนี้ </li></ul><ul><ul><li>ชื่อฟังก์ชั่น : เป็นชื่อที่ตั้งขึ้นสำหรับเรียกใช้ฟังก์ชั่นนั้น </li></ul></ul><ul><ul><li>อาร์กิวเมนต์ 1, อาร์กิวเมนต์ 2,… </li></ul></ul><ul><ul><li>เป็นตัวแปรชนิดต่างๆโดยระบุไว้ระหว่างวงเล็บเปิดกับวงเล็บปิด ซึ่งจะใช้อาร์กิวเมนต์ในการรับข้อมูลเข้ามาประมวลผล และส่งข้อมูลกลับออกไป ( สำหรับอาร์กิวเมนต์ที่ถูกกำหนดให้ส่งผ่านแบบ by reference ) </li></ul></ul><ul><ul><li>คำสั่ง : เป็นส่วนการทำงานภายในฟังก์ชั่น </li></ul></ul>Function ชื่อฟังก์ชั่น ([ อาร์กิวเมนต์ 1, อาร์กิวเมนต์ 2,…]){ คำสั่ง ; }
  4. 4. ตัวอย่างการสร้างฟังก์ชั่น ( 1 ) <ul><li>ตัวอย่างฟังก์ชั่นที่รับอาร์กิวเมนต์ </li></ul><ul><li><? </li></ul><ul><li>function carea ( $dia,$mode ) { </li></ul><ul><li>if ( $mode == 0 ) { </li></ul><ul><li>$area =( 22/28 )* $dia * $dia; // 22/7 * 1/4 </li></ul><ul><li>return $area; </li></ul><ul><li>}elseif ( $mode == 1 ) { </li></ul><ul><li>$area = $dia * $dia; </li></ul><ul><li>return $area; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>$diameter = 7; </li></ul><ul><li>echo &quot; วงกลมเส้นผ่านศูนย์กลางยาว $diameter หน่วย มีพื้นที่ =&quot;. carea ( $diameter,0 ).&quot; ตารางหน่วย <br> &quot; ; </li></ul><ul><li>echo &quot; สี่เหลี่ยมจตุรัสยาวด้านละ $diameter หน่วย มีพื้นที่ =&quot;. carea ( $diameter,1 ).&quot; ตารางหน่วย <br> &quot; ; </li></ul><ul><li>?> </li></ul>
  5. 5. ตัวอย่างการสร้างฟังก์ชั่น (2) <ul><li>ตัวอย่างฟังก์ชั่นที่ไม่รับอาร์กิวเมนต์ </li></ul><ul><li><? </li></ul><ul><li>function growname () { </li></ul><ul><li>$myname = &quot; nana &quot; ; </li></ul><ul><li>$newname = &quot;&quot; ; </li></ul><ul><li>for ( $i = 0;$i<strlen ( $myname ) ;$i ++) { </li></ul><ul><li>$newname .= substr ( $myname,$i,1 ) ; </li></ul><ul><li>echo $newname .&quot; <br> &quot; ; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>growname () ; </li></ul><ul><li>?> </li></ul><ul><li>จากตัวอย่างนี้ ถ้าลองเปลี่ยนเป็นฟังก์ชั่นที่รับอาร์กิวเมนต์เข้ามาหนึ่งตัวเพื่อแทนชื่อที่รับเข้ามาจะได้รูปแบบฟังก์ชั่นเป็นอย่างไร </li></ul>
  6. 6. รายละเอียดการทำงานของฟังก์ชั่น <ul><li>ฟังก์ชั่นจัดเป็น case insensitive คือสามารถเรียกใช้ด้วยตัวพิมพ์ใหญ่หรือพิมพ์เล็กก็ได้ </li></ul><ul><li>เช่น </li></ul><ul><li><? </li></ul><ul><li>function area ($x,$y){ </li></ul><ul><li>return $x*$y; </li></ul><ul><li>} </li></ul><ul><li>$xFunc = “area”; </li></ul><ul><li>print “Area 12.5 x 20 =”.$xFunc(12.5,20); </li></ul><ul><li>?> </li></ul>
  7. 7. รายละเอียดการทำงานของฟังก์ชั่น <ul><li>ผลลัพธ์ของโปรแกรมคือ </li></ul><ul><li>ในตัวอย่าง ตัวแปร $xFunc จะเก็บสตริงคำว่า “ area” เอาไว้ ซึ่งเป็นชื่อของฟังก์ชั่น area() ที่สร้างขึ้น </li></ul><ul><li>ทำให้การอ้างถึงตัวแปร $xFunc จะเป็นการเรียกใช้ฟังก์ชั่น area() ด้วย </li></ul>
  8. 8. การส่งผ่านค่าให้แก่ฟังก์ชั่น <ul><li>บางฟังก์ชั่นอาจไม่จำเป็นต้องรับค่าใดๆจากโปรแกรมหลักก็สามารถทำงานและให้ผลลัพธ์ได้ เช่น ฟังก์ชั่น time() จะให้ค่าเป็น timestamp ของวันที่และเวลาปัจจุบัน </li></ul><ul><li>แต่กรณีที่ฟังก์ชั่นต้องการค่าบางอย่างจากโปรแกรมที่เรียกใช้ จะทำได้โดยการส่งค่าผ่านพารามิเตอร์ โดยการส่งผ่านค่าให้กับฟังก์ชั่นทำได้สองวิธีคือ </li></ul><ul><ul><li>การส่งผ่านด้วยค่า ( Passing by Values ) </li></ul></ul><ul><ul><li>การส่งผ่านด้วยการอ้างอิง ( Passing by Reference ) </li></ul></ul>
  9. 9. การส่งผ่านด้วยค่า ( Passing by Values ) <ul><li>เป็นวิธีการส่งผ่านค่าที่มักใช้โดยทั่วไป </li></ul><ul><li>คือ เมื่อใส่ตัวแปรเป็นอาร์กิวเมนต์ ( argument ) ให้กับฟังก์ชั่นแล้ว ถึงแม้ในฟังก์ชั่นจะมีการเปลี่ยนค่าของตัวแปรพารามิเตอร์ที่รับค่ามาจากอาร์กิวเมนต์นั้น ค่าของตัวแปรอาร์กิวเมนต์ที่อยู่ภายนอกฟังก์ชั่นก็ไม่เปลี่ยนแปลง </li></ul>
  10. 10. ตัวอย่างการส่งผ่านค่าของตัวแปร 1 <ul><li><? </li></ul><ul><li>$var = 150; </li></ul><ul><li>$str = &quot; A &quot; ; </li></ul><ul><li>function sendVal ( $newVar,$newStr ) { </li></ul><ul><li>$newVar += 100; </li></ul><ul><li>++ $newStr; </li></ul><ul><li>echo &quot; ค่าของ $newVar คือ &quot;. $newVar .&quot; <br> &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $newStr คือ &quot;. $newStr .&quot; <br> &quot; ; </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul><ul><li>ค่าของฟังก์ชั่น $var ( ก่อนเรียกฟังก์ชั่น ) คือ <?echo $var;?><br> </li></ul><ul><li>ค่าของฟังก์ชั่น $str ( ก่อนเรียกฟังก์ชั่น ) คือ <?echo $str;?><br> </li></ul><ul><li><?sendVal ( $var,$str ) ;?> </li></ul><ul><li>ค่าของฟังก์ชั่น $var ( หลังเรียกฟังก์ชั่น ) คือ <?echo $var;?><br> </li></ul><ul><li>ค่าของฟังก์ชั่น $str ( หลังเรียกฟังก์ชั่น ) คือ <?echo $str;?><br> </li></ul>
  11. 11. ตัวอย่างการส่งผ่านค่าของตัวแปร 2 <ul><li><? </li></ul><ul><li>function mat ( $p1,$p2 ) { </li></ul><ul><li>$p1 = $p1+$p2; </li></ul><ul><li>return $p1 * $p2; </li></ul><ul><li>} </li></ul><ul><li>$x = 15;$y = 4; </li></ul><ul><li>print &quot; Before use Function<br> &quot; ; </li></ul><ul><li>print &quot; $x = $x<br> &quot; ; </li></ul><ul><li>print &quot; $y = $y<br> &quot; ; </li></ul><ul><li>$z = mat ( $x,$y ) ; </li></ul><ul><li>print &quot; After use Function<br> &quot; ; </li></ul><ul><li>print &quot; $x = $x<br> &quot; ; </li></ul><ul><li>print &quot; $y = $y<br> &quot; ; </li></ul><ul><li>print &quot; $z = $z<br> &quot; ; </li></ul><ul><li>?> </li></ul>ค่า z จะมาจากการที่เอาค่า x คูณกับค่า y โดยที่ ค่า x ที่เอามาคูณจะเป็นค่า x บวกค่า y ไปแล้ว เพราะฉะนั้นค่าที่ส่งกลับไปก็คือ (15+4)*4 76
  12. 12. การส่งผ่านด้วยการอ้างอิง ( Passing by Reference ) <ul><li>เมื่อใส่สัญลักษณ์ & (ampersand) เข้าไปไว้หน้าอาร์กิวเมนต์ในขณะสร้างฟังก์ชั่น จะมีผลให้เป็นการส่งผ่านด้วยการอ้างอิง </li></ul><ul><li>โดยหากในฟังก์ชั่นมีการเปลี่ยนค่าตัวแปรอาร์กิวเมนต์นั้น ค่าของตัวแปรภายนอกฟังก์ชั่นจะถูกเปลี่ยนตามด้วย </li></ul>
  13. 13. ตัวอย่างการส่งผ่านด้วยการอ้างอิง 1 <ul><li><? </li></ul><ul><li>$var = 150; </li></ul><ul><li>$str = &quot; A &quot; ; </li></ul><ul><li>function sendVal ( &$newVar,&$newStr ) { </li></ul><ul><li>$newVar += 100; </li></ul><ul><li>++ $newStr; </li></ul><ul><li>echo &quot; ค่าของ $newVar คือ &quot;. $newVar .&quot; <br> &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $newStr คือ &quot;. $newStr .&quot; <br> &quot; ; </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul><ul><li>ค่าของฟังก์ชั่น $var ( ก่อนเรียกฟังก์ชั่น ) คือ <?echo $var;?><br> </li></ul><ul><li>ค่าของฟังก์ชั่น $str ( ก่อนเรียกฟังก์ชั่น ) คือ <?echo $str;?><br> </li></ul><ul><li><?sendVal ( $var,$str ) ;?> </li></ul><ul><li>ค่าของฟังก์ชั่น $var ( หลังเรียกฟังก์ชั่น ) คือ <?echo $var;?><br> </li></ul><ul><li>ค่าของฟังก์ชั่น $str ( หลังเรียกฟังก์ชั่น ) คือ <?echo $str;?><br> </li></ul>การใส่ & ในอาร์กิวเมนต์ ของฟังก์ชั่นเพื่อให้เป็นการส่ง ผ่านแบบอ้างอิง ( passing by reference )
  14. 14. ตัวอย่างการส่งผ่านด้วยการอ้างอิง 2 <ul><li><? </li></ul><ul><li>function mat ( &$p1,$p2 ) { </li></ul><ul><li>$p1 = $p1+$p2; </li></ul><ul><li>return $p1 * $p2; </li></ul><ul><li>} </li></ul><ul><li>$x = 15;$y = 4; </li></ul><ul><li>print &quot; Before use Function<br> &quot; ; </li></ul><ul><li>print &quot; $x = $x<br> &quot; ; </li></ul><ul><li>print &quot; $y = $y<br> &quot; ; </li></ul><ul><li>$z = mat ( $x,$y ) ; </li></ul><ul><li>print &quot; After use Function<br> &quot; ; </li></ul><ul><li>print &quot; $x = $x<br> &quot; ; </li></ul><ul><li>print &quot; $y = $y<br> &quot; ; </li></ul><ul><li>print &quot; $z = $z<br> &quot; ; </li></ul><ul><li>?> </li></ul>
  15. 15. การกำหนดค่าเริ่มต้น ( default ) ให้กับอาร์กิวเมนต์ <ul><li>บางกรณีที่ต้องการสร้างฟังก์ชั่นโดยมรอาร์กิวเมนต์เป็นออปชั่น </li></ul><ul><li>คือในขณะเรียกใช้ฟังก์ชั่นจะใส่อาร์กิวเมนต์หรือไม่ใส่ก็ได้ </li></ul><ul><li>จะต้องมีการกำหนดค่าสำหรับอาร์กิวเมนต์ไว้ล่วงหน้า </li></ul>
  16. 16. ตัวอย่างการกำหนดค่า default ให้อาร์กิวเมนต์ <ul><li>จากตัวอย่างฟังก์ชั่น 2 ถ้าเปลี่ยนมาเป็นการกำหนดค่า default ให้กับอาร์กิวเมนต์ จะเป็นดังนี้ </li></ul><ul><li><? </li></ul><ul><li>function growname ( $myname = “Test” ) { </li></ul><ul><li>$newname = &quot;&quot; ; </li></ul><ul><li>for ( $i = 0;$i<strlen ( $myname ) ;$i ++) { </li></ul><ul><li>$newname .= substr ( $myname,$i,1 ) ; </li></ul><ul><li>echo $newname .&quot; <br> &quot; ; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>growname ( “nana” ) ; </li></ul><ul><li>growname () ; </li></ul><ul><li>?> </li></ul>
  17. 17. การคืนค่ามากกว่า 1 ค่า <ul><li>เมื่อต้องการใช้ฟังก์ชั่นคืนค่าให้มากกว่า 1 ค่า สามารถอาศัยคุณสมบัติฟังก์ชั่นใน PHP สามารถคืนค่าเป็นอาร์เรย์ได้ โดยการเขียนคำสั่งการคืนค่าในลักษณะดังนี้ </li></ul><ul><li>return array($var1,$var2) </li></ul>
  18. 18. ตัวอย่างการคืนค่ามากกว่า 1 ค่า <ul><li><? </li></ul><ul><li>function calculator($x,$y){ </li></ul><ul><li>$a = $x+$y; </li></ul><ul><li>$b = $x-$y; </li></ul><ul><li>$c = $x*$y; </li></ul><ul><li>$myarr[0] = $a; </li></ul><ul><li>$myarr[1] = $b; </li></ul><ul><li>$myarr[2] = $c; </li></ul><ul><li>return $myarr; </li></ul><ul><li>} </li></ul><ul><li>$x=20; $y=12; </li></ul><ul><li>$value = calculator($x,$y); </li></ul><ul><li>print &quot;$x + $y = &quot;.$value[0].&quot;<br>&quot;; </li></ul><ul><li>print &quot;$x - $y = &quot;.$value[1].&quot;<br>&quot;; </li></ul><ul><li>print &quot;$x * $y = &quot;.$value[2].&quot;<br>&quot;; </li></ul><ul><li>?> </li></ul>
  19. 19. ขอบเขต scope ของตัวแปรและค่าคงที่ <ul><li>ตัวแปรที่ประกาศไว้ในฟังก์ชั่นใด จะเป็นที่รู้จักและเรียกใช้ฟังก์ชั่นนั้น ถึงแม้ว่าจะมีการประกาศตัวแปรชื่อเดียวกันไว้ในทั้งในและนอกฟังก์ชั่น ก็ถือว่าเป็นตัวแปรคนละตัวและมีตำแหน่งในหน่วยความจำคนละที่กัน </li></ul><ul><li><? </li></ul><ul><li>$myName = &quot; suthasinee &quot; ; </li></ul><ul><li>function testVar () { </li></ul><ul><li>$myName = 1500.25; </li></ul><ul><li>return $myName; </li></ul><ul><li>} </li></ul><ul><li>echo &quot; ตัวแปร $myName มีค่า $myName <br> &quot; ; </li></ul><ul><li>echo &quot; ตัวแปร $myName ในฟังก์ชั่นมีค่า &quot;. testVar ().&quot; <br> &quot; ; </li></ul><ul><li>echo &quot; ตัวแปร $myName หลังจากเรียกฟังก์ชั่นมีค่า $myName <br> &quot; ; </li></ul><ul><li>?> </li></ul>
  20. 20. ขอบเขต scope ของตัวแปรและค่าคงที่ ( ต่อ ) <ul><li>จากตัวอย่าง ค่าของตัวแปร $myName ที่อยู่ภายในและภายนอกฟังก์ชั่นจะมีค่าเป็นของตัวเอง </li></ul><ul><li>ถ้าเราต้องการอ้างถึงตัวแปร $myName ที่อยู่ภายนอกจากภายในฟังก์ชั่น ก็จะต้องประกาศตัวแปรนั้นโดยใช้คำสั่ง global มีรูปแบบดังนี้ </li></ul><ul><ul><li>Global var_name1, var_name2, var_name3,…; </li></ul></ul><ul><ul><li>โดยการประกาศนี้จะต้องทำภายในฟังก์ชั่นดังตัวอย่าง </li></ul></ul>
  21. 21. ตัวอย่างคำสั่ง global <ul><li><? </li></ul><ul><li>$myVar = 500; </li></ul><ul><li>function TestVar () { </li></ul><ul><li>global $myVar; </li></ul><ul><li>$myVar ++ ; </li></ul><ul><li>} </li></ul><ul><li>echo &quot; ค่าของ $myVar ก่อนเรียกฟังก์ชั่น : $myVar<br> &quot; ; </li></ul><ul><li>TestVar () ; </li></ul><ul><li>echo &quot; ค่าของ $myVar หลังจากเรียกฟังก์ชั่น : $myVar<br> &quot; ; </li></ul><ul><li>?> </li></ul>
  22. 22. การสร้างตัวแปรแบบ static <ul><li>โดยทั่วไปแล้วปกติตัวแปรที่เราประกาศไว้ภายในฟังก์ชั่นจะถูกทำลายไปหลังจากการทำงานของฟังก์ชั่นนั้นๆสิ้นสุดลง </li></ul><ul><li>และจะถูกสร้างขึ้นมาใหม่ตอนที่เราเรียกใช้ฟังก์ชั่น หรือฟังก์ชั่นไม่สามารถรักษาค่าของตัวแปรเหล่านี้ให้คงสภาพอยู่ได้ในระหว่างการทำงานแต่ละครั้ง </li></ul>
  23. 23. ตัวอย่างฟังก์ชั่นที่ไม่ได้สร้างเป็น static <ul><li><? </li></ul><ul><li>function testloop () { </li></ul><ul><li>$value = 150; </li></ul><ul><li>$str = &quot; A &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $value คือ $value, &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $str คือ $str<br> &quot; ; </li></ul><ul><li>$value -= 10; </li></ul><ul><li>$str ++ ; </li></ul><ul><li>} </li></ul><ul><li>for ( $i = 0;$i<4;$i ++) { </li></ul><ul><li>testloop () ; </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul>
  24. 24. ตัวอย่างฟังก์ชั่นที่สร้างเป็น static <ul><li><? </li></ul><ul><li>function testloop () { </li></ul><ul><li>static $value = 150; </li></ul><ul><li>static $str = &quot; A &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $value คือ $value, &quot; ; </li></ul><ul><li>echo &quot; ค่าของ $str คือ $str<br> &quot; ; </li></ul><ul><li>$value -= 10; </li></ul><ul><li>$str ++ ; </li></ul><ul><li>} </li></ul><ul><li>for ( $i = 0;$i<4;$i ++) { </li></ul><ul><li>testloop () ; </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul>
  25. 25. ฟังก์ชั่นที่เรียกตัวเอง ( Recursive Function ) <ul><li>ฟังก์ชั่นใน PHP มีความสามารถในการเรียกตัวเอง ( recursion ) ได้เช่นเดียวกันกับอีกหลายภาษา </li></ul><ul><li>โดยใน PHP4 , 5 สามารถนำสคริปต์ที่คอมไพล์ไว้แล้วกลับมาทำงานซ้ำได้ทันที จึงเร็วกว่า PHP3 </li></ul>
  26. 26. ตัวอย่างการทำ Recursive Function <ul><li><? </li></ul><ul><li>function xx($a){ </li></ul><ul><li>$a = $a/2; </li></ul><ul><li>print &quot;$a = $a<br>&quot;; </li></ul><ul><li>if(gettype($a)==&quot;integer&quot;){ </li></ul><ul><li>xx($a); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>xx(1000); </li></ul><ul><li>?> </li></ul>
  27. 27. ทดสอบ <ul><li>ให้สร้างฟังก์ชั่น 2 ฟังก์ชั่นโดยที่ มีการเรียกใช้ฟังก์ชั่นที่ 2 ภายในฟังก์ชั่นที่ 1 </li></ul><ul><li>ฟังก์ชั่นที่ 1 ให้เป็นการทำงานที่ไม่มีการรับอาร์กิวเมนต์เข้ามาในฟังก์ชั่น โดยที่เป็นการสร้างวันที่และเวลาจากค่า timestamp หลังจากนั้นให้ทำการแยกระหว่างวันที่และเวลา รูปแบบของวันที่และเวลาที่ต้องการได้ เช่น 11/06/08 2:04:48 เมื่อได้ส่วนของวันที่มาแล้วให้ทำการตรวจสอบรูปแบบของวันที่ว่าอยู่ในรูปแบบ dd/mm/yy หรือไม่ผ่านฟังก์ชั่นของ regular expression </li></ul><ul><li>ฟังก์ชั่นที่ 2 ทำการเรียกใช้ฟังก์ชั่นที่ 1 ในส่วนต้นของฟังก์ชั่น หลังจากนั้นให้ทำการ รับอาร์กิวเมนต์เข้ามาในฟังก์ชั่น โดยตัวแปรที่ส่งเข้ามาคือค่าฐานและสูง เพื่อส่งมาคำนวณหาพื้นที่สามเหลี่ยมจากสูตร ½* ฐาน * สูง แล้วส่งค่ากลับไปแล้วก็ print ค่าที่ส่งกลับออกมา </li></ul>

×