ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th
ฟังก์ชัน วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
2
นิยาม ฟังก์ชันคือส่วนของโปรแกรมที่ทำงานเสร็จสิ้นภายในตัวเอง มีลักษณะเหมือนกับโปรแกรมย่อยสับรูทีน (subroutine) ภาษา PHP มีชนิดของฟังก์ชันที่เตรียมให้ใช้งาน 2 ชนิด คือ Library Function คือ ฟังก์ชันที่ภาษา PHP สร้างไว้เรียบร้อยแล้ว สามารถเรียกใช้ได้ทันที User-defined functions คือฟังก์ชันที่ผู้ใช้โปรแกรมเขียนขึ้นเอง ()
3
ฟังก์ชันที่ผู้ใช้โปรแกรมเขียนขึ้นเอง (User-defined functions)
การสร้างฟังก์ชันขึ้นใช้เอง มีรูปแบบดังนี้ function function_name ([parameterList]) { รายการชุดคำสั่ง [return ค่าที่ต้องการส่งกลับ] }
4
การส่งค่ากลับของฟังก์ชัน
ฟังก์ชันจะให้ค่ากลับคืนหรือไม่ก็ได้ ถ้าต้องการให้ค่ากลับคืนจากการทำงานของฟังก์ชัน จะใช้คำสั่ง return การเรียกใช้ฟังก์ชัน ทำได้โดยการอ้างถึงชื่อของฟังก์ชันที่ต้องการโดยที่คำสั่งที่เรียกใช้นั้นจะอยู่ก่อนหรือหลังฟังก์ชันที่ถูกเรียกก็ได้
5
การส่งค่ากลับของฟังก์ชัน
ตัวอย่าง การคำนวนหาพื้นที่วงกลม <? function area_of_circle( $flt_radius ) { return( * ($flt_radius * $flt_radius)); } $flt_area_of_circle = area_of_circle(5); echo "The area is $flt_area_of_circle.<br>"; ?> The area is
6
<HTML> <HEAD> <TITLE>Figure 4-2</TITLE> </HEAD> <BODY> <? function printBold($inputText) { print("<B>" . $inputText . "</B>"); } print("This Line is not Bold<BR>\n"); printBold("This Line is Bold"); print("<BR>\n"); ?> </BODY> </HTML>
7
การผ่านค่าพารามิเตอร์ให้กับฟังก์ชัน
การผ่านค่าไปยังฟังก์ชันมี 2 วิธี 1. Call by values ตัวแปรรับค่ามาแล้วเกิดการเปลี่ยนแปลงค่าจะไม่มีการส่งกลับคืน 2. Call by reference การส่งข้อมูลในกรณีนี้ตัวแปรพารามีเตอร์ที่รับค่าจะต้องนำหน้าด้วยเครื่องหมาย “&” กรณีนี้จะทำให้ตัวแปรที่ทำหน้าที่ส่งค่าและตัวแปรที่ทำหน้าที่รับค่าอ้างอิงที่อยู่ของข้อมูลเดียวกัน เมื่อมีการเปลี่ยนแปลงค่าของตัวแปรพารามีเตอร์ในฟังก์ชันก็จะมีผลทำให้ค่าของตัวแปรอาร์กิวเมนต์ที่ส่งไปให้โปรแกรมเปลี่ยนไปด้วย
8
ตัวอย่าง Call by values
function one ( $parameter ) { $parameter++; } $a = 10 ; one( $a ) ; echo “ a = $a <BR>” ; ผลลัพธ์ของโปรแกรมคือ a = 10
9
ตัวอย่าง Call by reference
function one ( &$parameter ) { $parameter++; } $a = 10 ; one( $a ) ; echo “ a = $a <BR>” ; ผลลัพธ์ของโปรแกรมคือ a = 11
10
<HEAD> <TITLE>Figure 4-4</TITLE> </HEAD> <BODY> <? function stripCommas(&$inputString) { $inputString = ereg_replace(",", "", $inputString); } $myNumber = "10,000"; stripCommas($myNumber); print($myNumber); ?> </BODY> </HTML>
11
ตัวอย่าง <? function minmax (&$a, &$b) { if ($a > $b) {
<? function minmax (&$a, &$b) { if ($a > $b) { $t=$a; $a=$b; $b=$t; } } $x=10; $y=3; echo "x=",$x,",y=",$y,"<BR>\n"; minmax($x,$y); ?>
12
การสลับค่าของตัวแปรสองตัวด้วยฟังก์ชัน swap()
<? function swap(&$a, &$b) { $t = $a; $a = $b; $b = $t; } $x=10; $y=3; echo "x=",$x,",y=",$y,"\n"; swap($x,$y); ?>
13
มีข้อสงเกตอยู่ว่า การใช้ call-by-reference ไม่จำเป็นต้องทำตอนนิยามฟังก์ชันเท่านั้น แต่อาจจะทำตอนผ่านตัวแปรเมื่อเรียกใช้งานจริง ตัวอย่างเช่น <? function swap($a, $b) { $t = $a; $a = $b; $b = $t; } $x=10; $y=3; echo "x=",$x,",y=",$y,"\n"; swap(&$x, &$y); ?>
14
การกำหนดค่าเริ่มต้นให้กับตัวแปรพารามิเตอร์
เราสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรทำให้มีประสิทธิภาพมากขึ้น ตัวอย่าง <? function font( $str_text, $str_color = 'blue', $int_size = 2 ) { echo "<font size=\"$int_size\" color=\"$str_color\">$str_text</a>"; } ?> <? font('This line is blue - size 2.'); ?> <br> <? font('This line is red - size 2.', 'red'); ?><br> <? font('This line is green - size 4', 'green', 4); ?><br> This line is blue – size 2. This line is blue – size 4.
15
<HTML> <HEAD> <TITLE>Arguments with Default Values</TITLE> </HEAD> <BODY> <? function printColored($Text, $Color="black") { print("<FONT COLOR=\"$Color\">$Text</FONT>"); } printColored("This is black text"); print("<BR>\n"); printColored("This is blue text", "blue"); ?> </BODY> </HTML>
16
ขอบเขตของตัวแปร มี 2 แบบ คือ
1. Global scope เมื่อกำหนดตัวแปรแบบนี้แล้วสามารถเรียกใช้ได้ทุกส่วนของโปรแกรมและค่าของตัวแปรนั้นยังอยู่จนกว่าโปรแกรมนั้นจะจบหรือหยุดทำงาน 1.1 โดยใช้คำสั่ง global 1.2 โดยผ่านตัวแปรอาร์เรย์ชื่อ $GLOBAL
17
<? $a = 10; $b = 20; function getMin ( ) { global $a, $b; if ($a < $b) return $a; else return $b; } function getMin2 () { if ($GLOBALS["a"] < $GLOBAL["b"]) return $GLOBALS["a"]; else return $GLOBALS["b"]; echo getMin()."<BR>\n"; echo getMin2()."<BR>\n"; ?>
18
ฟังก์ชัน getMin() อีกรูปแบบหนึ่ง โดยไม่ใช้ตัวแปรแบบ global ภายในฟังก์ชัน และใช้วิธีผ่านค่าแทน
<? $a = 10; $b = 20; function getMin ($a, $b) { if ($a < $b) return $a; else return $b; } echo getMin($a, $b)."<BR>\n"; ?>
19
การใช้ตัวแปรแบบ global ภายในฟังก์ชัน
2. Local Scope คือตัวแปรที่กำหนดขึ้นใช้ภายในฟังก์ชันนั้นๆเท่านั้น เมื่อออกจากส่วนของโปรแกรมนั้นไปแล้วตัวแปรนั้นจะหายไปและตัวแปรที่กำหนดในฟังก์ชันหนึ่งไม่สามารถเรียกใช้อีกจากฟังก์ชันหนึ่งได้
20
การกำหนดตัวแปรแบบ static ภายในฟังก์ชัน
ตัวแปรภายในฟังก์ชันจะสามารถเก็บค่าไว้ได้ตลอดเวลาโดยไม่สูญหายไป function MyFunc() { static $num_func_calls = 0; echo "my function\n"; return ++$num_func_calls; }
21
การใช้ฟังก์ชันเพื่อสร้างตัวเลขแบบสุ่ม
การใช้ฟังก์ชันเพื่อสร้างตัวเลขแบบสุ่ม หรือ random number generator จะคล้ายกับของภาษาซี ตัวอย่าง srand( date("s") ); for ($i=0; $i < 10; $i++) { $x = rand() % 10; echo $x," "; }
22
ฟังก์ชันเรียกใช้ฟังก์ชัน (Nesting Function Calls)
ตัวอย่าง <?php function increment_by_two( $int_parameter ) { $int_parameter += 2; return($int_parameter); } มีต่อ
23
function increment_by_three( $int_parameter ) {
// make a nested function call to increment_by_two(). return( increment_by_two($int_parameter) ); } $a = increment_by_three( 34 ); echo "a = $a<br>"; ?> ผลลัพธ์ของโปรแกรมคือ a = 37
24
การสร้างฟังก์ชันแบบเรียกตัวเอง (recursive function)
ฟังก์ชันที่มีคำสั่งภายในฟังก์ชันนั้นเรียกใช้ฟังก์ชันตัวเองแบบวนลูป ตัวอย่าง การหาค่าแฟกทอเรียล n! function factorial ($n) { if ( ($n == 0) || ($n == 1) ) return 1; else return $n*factorial($n-1); }
25
<HTML> <HEAD> <TITLE>Figure 4-6</TITLE> </HEAD> <BODY> <? function checkInteger($Number) { if($Number > 1) /* integer minus one is still an integer */ return(checkInteger($Number-1)); } elseif($Number < 0)
26
{ /* numbers are symmetrical, so */ /* check positive version */ return(checkInteger((-1)*$Number-1)); } else if(($Number > 0) AND ($Number < 1)) return("no"); /* zero and one are */ /* integers by definition */ return("yes");
27
print("Is 0 an integer? " . checkInteger(0) . "<BR>\n"); print("Is 7 an integer? " . checkInteger(7) . "<BR>\n"); print("And 3.5? " . checkInteger(3.5) . "<BR>\n"); print("What about -5? " . checkInteger(-5) . "<BR>\n"); print("And -9.2? " . checkInteger(-9.2) . "<BR>\n"); ?> </BODY> </HTML>
28
ตัวอย่างที่ 5-10 fibonacci.inc การหาค่า fibonacci number
<? function fibonacci( $var ) { // the fibonacci series is only defined for // positive values. if ($var < 0) { return( 0 ); } // the first two elements in the series are // defined as zero and one and don't need recursion. if ($var < 2) { return( $var );
29
// use recursion to find the previous two elements
// in the series. return( fibonacci($var-1) + fibonacci($var-2) ); } ?>
30
โปรแกรมที่เรียกใช้คือ
<? // include the fibonacci function in this script require (‘fibonacci.inc’) ; // call the fibonacci function with a parameter of four. $n = Fibonacci ( 4 ) ; // display the result of the fibonacci call. Echo “$n <BR>” ; ?>
31
การผ่านค่ากลับคืนมากกว่าหนึ่งจากฟังก์ชัน
โดยปรกติแล้วเราไม่สามารถผ่านค่ากลับคืนจากฟังก์ชันได้มากกว่าหนึ่ง แต่อย่างไรก็ตาม ยังมีวิธีการหนึ่งที่ช่วยแก้ปัญหาดังกล่าวได้ วิธีนี้คือ เก็บค่าต่างๆที่ต้องการจะใช้เป็นค่ากลับคืนไว้ใน array แล้วใช้ array นั้นเป็นค่ากลับคืน และผู้เรียกใช้ฟังก์ชันสามารถใช้ฟังก์ชัน list() อ่านค่าเหล่านั้นได้ ตัวอย่างเช่น function foobar() { return array ("foo", "bar", 0xff); } list ($foo, $bar, $num) = foobar(); echo "$foo $bar $num <BR>\n"; ผลลัพธ์ของโปรแกรมคือ foo bar 255
32
<HTML> <HEAD> <TITLE>Figure 4-7: Dynamically Calling a Function</TITLE> </HEAD> <BODY> <? function write($text) { print($text); } function writeBold($text) print("<B>$text</B>");
33
$myFunction = "write"; $myFunction("Hello!"); print("<BR>\n"); $myFunction = "writeBold"; $myFunction("Goodbye!"); ?> </BODY> </HTML>
34
การใช้คำสั่ง include และ require
คำสั่งทั้งสองมีไว้เพื่อแทรกเนื้อหาจากไฟล์อื่นที่ต้องการ โดย คำสั่ง require จะอ่านเพียงครั้งเดียว คือไฟล์แรก และจะแทรกไฟล์นี้เท่านั้นไปตามจำนวนครั้งที่วนลูป ในขณะที่ include สามารถอ่านได้ไฟล์ต่างๆกันตามจำนวนครั้งที่ต้องการ
35
ตัวอย่าง <? $filename[]="file1.inc"; $filename[]="file2.inc"; for ($i = 0; $i < 2; $i++) { include $filename[$i]; } ?> ไฟล์ file1.inc Hello world 1<BR> ไฟล์ file2.inc Hello world 2<BR>
36
การอ่านตัวแปรจากภายนอกที่ได้จากการ Web browser โดยวิธี GET หรือ POST
การส่งและรับข้อมูลจะหว่าง Web browser กับ Script ที่เขียนขึ้นมา ตัวอย่าง การใช้ Post <form action="login.php3" method="post"> <table> <tr><td>login:</td> <td><input type="text" name="login"></td> </tr><br> มีต่อ
37
<tr><td>password:</td>
<td><input type="text" name="password"></td> </tr><br> </table> <p><input type="submit"> </form>
38
ตัวอย่าง ไฟล์ login.php
<HTML> <HEAD><TITLE> Result </TITLE></HEAD> <BODY> <P> Your login = <? echo "$login" ?> <BR> Your password = <? echo "$password"; ?> </BODY> </HTML>
39
การตรวจชนิดของ web browser
ตัวอย่าง function getBrowserName() { global $HTTP_USER_AGENT; $browser=strtoupper($HTTP_USER_AGENT); if (strstr($browser,"MSIE.")) return "MS Internet Explorer"; else if (strstr($browser,"MOZILLA")) return "Netscape"; else return ""; }
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.