หน่วยที่ 8 ฟังกช์ นั 30 December 2016 ในบทน้ี คุณจะไดเ้ รียนรู้เกี่ยวกบั การสร้างและการใชง้ านฟังกช์ นั ในภาษา PHP คณุ จะเขา้ ใจแนวคดิ และวธิ ีการใชง้ านของฟังกช์ นั ซ่ึงจะเป็น ฟังกช์ นั ท่ีสร้างจากผใู้ ชเ้ ป็นหลกั ฟังกช์ นั คืออะไร ฟังกช์ นั (Functions) คอื ส่วนของโปรแกรมหรือซอสโคด้ ท่ีใชส้ าหรับจดั การกบั งานที่เฉพาะเจาะจง ฟังก์ชนั เป็นข้นั ตอนของการทางาน บางอยา่ งเพอ่ื ใหไ้ ดผ้ ลลพั ธ์ตามที่ตอ้ งการโดยการเรียกใชฟ้ ังกช์ นั ในภาษา PHP มีฟังกช์ นั มาตรฐานที่คณุ สามารถใชง้ านได้ ซ่ึง เรียกวา่ Predefined function ซ่ึงแน่นอนฟังกช์ นั เหลา่ น้ีมีไวส้ าหรับจดั การงานทว่ั ไปเท่าน้นั ในบทน้ีเราจะพดู เก่ียวกบั ฟังกช์ นั ที่ สร้างจากผใู้ ช้ (User-defined function) ฟังกช์ นั มีส่วนประกอบสองอยา่ งคือส่วนหวั ของฟังกช์ นั (head) และส่วนการทางานของฟังกช์ นั (function body) ในภาษา PHP เรากาหนดจานวนของพารามิเตอร์ของฟังกช์ นั ท่ีส่วนหวั และการทางานของฟังกช์ นั ในส่วนการทางาน ซ่ึงฟังกช์ นั อาจจะมีการส่งคา่ กลบั หรือไม่มีกไ็ ด้ (return) น่ีเป็นรูปแบบของการประกาศฟังกช์ นั ในภาษา PHP function name(parameters) { statements return value (optional) } ในการสร้างฟังกช์ นั ในภาษา PHP เราใชค้ าสัง่ function และตามดว้ ยชื่อของฟังกช์ นั ซ่ึงมีหลกั การต้งั ช่ือเหมือนกบั ตวั แปร parameters เป็นการกาหนดพารามิเตอร์ของฟังกช์ นั ซ่ึงอาจจะมีหรือไม่มีกไ็ ด้ ภายในบลอ็ คการทางานของฟังกช์ นั {} เป็นข้นั ตอน การทางานของฟังกช์ นั และคาสง่ั return ใชส้ าหรับส่งคา่ กลบั ซ่ึงเป็นทางเลอื ก การสร้างฟังกช์ นั ในภาษา PHP การสร้างฟังกช์ นั เป็นการรวบรวมกลมุ่ คาสงั่ ของโปรแกรมในการทางานท่เี ฉพาะเจาะจง การสร้างฟังกช์ นั จะทาใหค้ ณุ สามารถเรียกใชโ้ คด้ เดิม (reuse) โดยที่ไม่ตอ้ งเขยี นข้นึ ใหม่ มาดูตวั อยา่ งการสร้างฟังกช์ นั ในภาษา PHP function welcome() { echo \"Welcome to marcuscode.\\n\"; }
function hello($name) { echo \"Hello $name!\\n\"; } function add_number($a, $b) { $sum = $a + $b; echo \"$a + $b = $sum\\n\"; } ในตวั อยา่ งเป็นการสร้างฟังกช์ นั ในภาษา PHP ซ่ึงเราไดส้ ร้าง 3 ฟังกช์ นั สาหรับทางานท่ีแตกต่างกนั ออกไป ฟังกช์ นั welcome() เป็น ฟังกช์ นั สาหรับแสดงขอ้ ความตอ้ นรับสาหรับ marcuscode.com ฟังกช์ นั hello() เป็นฟังกช์ นั ในการกล่าวคาทกั ทาย โดยมี $name ท่สี ่งเขา้ มายงั ฟังกช์ นั เรียกวา่ พารามิเตอร์ของฟังกช์ นั และ ฟังกช์ นั add_number() เป็นฟังกช์ นั สาหรับบวกตวั เลขสองตวั ท่ีส่งเป็นพารามิเตอร์คือ $a และ $b และแสดงผลรวมออกทางหนา้ จอ ท้งั 3 ฟังกช์ นั ไม่มีการส่งค่ากลบั ฟังกช์ นั ท่ีมีการส่งค่ากลบั ในบางคร้ังของการเขียนโปรแกรม คณุ อาจจะตอ้ งการผลลพั ธ์ทีไ่ ดห้ ลงั จากทางานจากฟังกช์ นั คุณสามารถใชค้ าสั่ง return เพอ่ื ส่งคา่ กลบั ไป ยงั จุดที่เรียกใชฟ้ ังกช์ นั มาดูตวั อยา่ งการสร้างฟังกช์ นั ท่ีมีการส่งค่ากลบั ในภาษา PHP function get_site_name() { return \"marcuscode\"; } function factorial($n) { $fac = 1; for ($i = 1; $i <= $n; $i++) { $fac *= $i; } return $fac; }
function get_factor($number) { $factor = []; for ($i = 1; $i <= $number; $i++) { if ($number % $i == 0) { array_push($factor, $i); } } return $factor; } function square_area($width, $height) { return $width * $height; } ในตวั อยา่ งเป็นฟังกช์ นั ที่มีการส่งค่ากลบั ในรูปแบบต่างๆ การส่งค่ากลบั ของฟังกช์ นั น้นั จะใชค้ าส่ัง return และตามดว้ ยคา่ ท่ีตอ้ งการส่งกลบั ในฟังกช์ นั อาจจะมีการใชค้ าสงั่ return ไดห้ ลายที่ ซ่ึงเม่ือโปรแกรมพบกบั คาสง่ั น้ี จะเป็นการจบการทางานในฟังกช์ นั ในทนั ที function get_site_name() { return \"marcuscode\"; } function factorial($n) { $fac = 1; for ($i = 1; $i <= $n; $i++) { $fac *= $i; } return $fac; } เราไดส้ ร้าง 4 ฟังกช์ นั สาหรับการทางานท่ีแตกต่างกนั ฟังกช์ นั get_site_name() เป็นฟังกช์ นั สาหรับรับชอ่ื ของเวบ็ ไซตท์ ่ีมีการส่งคา่ กลบั เป็น String ฟังกช์ นั น้ีไม่มีพารามิเตอร์ ฟังกช์ นั factorial() เป็นฟังกช์ นั สาหรับหาค่า Factorial ของจานวนเตม็ N ฟังกช์ นั น้ีมี พารามิเตอร์ 1 ตวั ท่ีส่งเขา้ มาในฟังกช์ นั function get_factor($number) {
$factor = []; for ($i = 1; $i <= $number; $i++) { if ($number % $i == 0) { array_push($factor, $i); } } return $factor; } function square_area($width, $height) { return $width * $height; } ต่อมาเป็นฟังกช์ นั get_factor() สาหรับหาตวั ประกอบท้งั หมดของตวั เลขจานวนเตม็ N โดยฟังกช์ นั น้ีส่งคา่ กลบั เป็นอาเรยแ์ ละมี พารามิเตอร์ 1 ตวั สุดทา้ ยเป็นฟังกช์ นั square_area() สาหรับหาคา่ พน้ื ท่ีของสี่เหลียม โดยมีความกวา้ งและความยาวเป็นพารามิเตอร์ของ ฟังกช์ นั คุณจะเห็นวา่ การทางานของฟังกช์ นั มีต้งั แต่ง่ายจนถึงซบั ซอ้ น ข้ึนกบั วา่ คุณสร้างฟังกช์ นั น้นั ข้ึนมาเพอื่ อะไร การเรียกใชง้ านฟังกช์ นั หลงั จากท่ีเราสร้างฟังกช์ นั ในตวั อยา่ งก่อนหนา้ แลว้ ต่อไปมาดูการเรียกใชง้ านฟังกช์ นั ในภาษา PHP <?php function welcome() { echo \"Welcome to marcuscode.\\n\"; } function hello($name) { echo \"Hello $name.\\n\"; } function add_number($a, $b) {
$sum = $a + $b; echo \"$a + $b = $sum\\n\"; } welcome(); hello(\"Marcus\"); hello(\"Jonathan\"); hello(\"Daniel\"); add_number(2, 3); add_number(34, 15); add_number(1.45, 2.4); ?> ในตวั อยา่ ง เป็นการเรียกใชฟ้ ังกช์ นั ในภาษา PHP คณุ สามารถประกาศฟังกช์ นั ไดท้ ุกๆ ท่ีในโปรแกรม ในการเรียกใชฟ้ ังกช์ นั น้นั เราใชช้ ่ือของ ฟังกช์ นั และตามดว้ ยคา่ ที่ตอ้ งส่งเขา้ ไปในฟังกช์ นั พารามิเตอร์ ซ่ึงเรียกวา่ อากิวเมนต์ welcome(); ในตวั อยา่ ง เราเรียกใชฟ้ ังกช์ นั welcome() ซ่ึงฟังกช์ นั น้ีไม่มีพารามิเตอร์ ดงั น้นั ในตอนเรียกใชม้ นั จึงไม่มีอากิวเมนต์ hello(\"Marcus\"); hello(\"Jonathan\"); hello(\"Daniel\"); เราเรียกใชฟ้ ังกช์ นั hello() ในการเรียกใชฟ้ ังกช์ นั น้ีเราจะตอ้ งส่งอากิวเมนต์ เช่น \"Marcus\" ซ่ึงเป็นอากิวเมนตเ์ พอื่ ส่งเขา้ ไปทางานใน ฟังกช์ นั ในตอนน้ีคณุ จะเห็นแลว้ วา่ เราสามารถเรียกใชฟ้ ังกช์ นั ไดห้ ลายคร้ัง แต่เราเปลีย่ นคา่ ของอากิวเมนตแ์ ทน ซ่ึงน่ีเองเป็นประโยชน์ของ ฟังกช์ นั ท่ีทาใหเ้ ราไม่ตอ้ งเขยี นโคด้ เดิมซ้าๆ add_number(2, 3); add_number(34, 15); add_number(1.45, 2.4); เรายงั เรียกใชฟ้ ังกช์ นั บวกเลข add_number() ที่เราไดส้ ร้างไว้ ฟังกช์ นั น้ีตอ้ งการสองอากิวเมนตท์ ่ีเป็นตวั เลขเพอ่ื ทางาน
Welcome to marcuscode. Hello Marcus. Hello Jonathan. Hello Daniel. 2+3=5 34 + 15 = 49 1.45 + 2.4 = 3.85 นี่เป็นผลลพั ธ์การทางานของเรียกใชฟ้ ังกช์ นั ในตวั อยา่ งก่อนหนา้ เป็นการเรียกใชง้ านฟังกช์ นั ที่ไม่มีการส่งค่ากลบั สาหรับฟังกช์ นั ท่ีมีการส่งค่ากลบั เราจาเป็นตอ้ งนาตวั แปรมารับคา่ ท่ีจะ ส่งกลบั จากฟังกช์ นั เพอื่ ที่จะนาไปใชง้ านต่อไป มาดูตวั อยา่ งการใชง้ านฟังกช์ นั ท่ีมีการส่งคา่ กลบั ในภาษา PHP <?php function get_pronoun($gender) { if ($gender == 0) { return \"he\"; } else { return \"she\"; } } function celsius_to_fahrenheit($celsius) { return $celsius * 1.8 + 32; } function get_weather($celsius) { $text = \"\"; if ($celsius <= 0) { $text = \"freezing\"; } else if ($celsius <= 10) { $text = \"very cold\";
} else if ($celsius <= 18) { $text = \"cold\"; } else if ($celsius <= 28) { $text = \"warm\"; } else if ($celsius <= 38) { $text = \"hot\"; } else { $text = \"extremely hot\"; } return $text; } function mph_to_kmph($mph) { return $mph * 1.60934; } $pronoun = get_pronoun(0); echo \"This is Marcus's profile, $pronoun has 3 friends.\\n\"; echo \"It was \" . celsius_to_fahrenheit(3) . \" degree yesterday, \"; echo \"the weather was \" . get_weather(3) . \".\\n\"; echo \"It is \" . celsius_to_fahrenheit(12) . \" degree today, \"; echo \"the weather is \" . get_weather(12) . \".\\n\"; echo \"It will be \" . celsius_to_fahrenheit(22) . \" degree tomorrow, \"; echo \"the weather would get \" . get_weather(22) . \"er.\\n\"; $km = mph_to_kmph(36); echo \"The car is running at 36 mph or $km km/h.\\n\";
?> ในตวั อยา่ งเป็นการเรียกใชง้ านฟังกช์ นั ที่มีการส่งค่ากลบั คา่ ที่ส่งกลบั มาจากฟังกช์ นั น้นั เป็น Literal ดงั น้นั เราสามารถใชม้ นั เหมือนกบั ตวั แปรหรือ Literal ได้ โดยการนาตวั แปรมารับคา่ หรือนาไปใชง้ านในทนั ที $pronoun = get_pronoun(0); echo \"This is Marcus's profile, $pronoun has 3 friends.\\n\"; ในตวั อยา่ งเราเรียกใชฟ้ ังกช์ นั get_pronoun() สาหรับใชร้ ับค่าของคาสรรพนามเรียกแทนชื่อ เราใหค้ วามหมายวา่ 0 เป็นเพศชาย และ นอกเหนือจากน้ีจะเป็นเพศหญงิ เราใชต้ วั แปร $pronoun ในการรับค่าที่ส่งกลบั มาจากฟังกช์ นั echo \"It was \" . celsius_to_fahrenheit(3) . \" degree yesterday, \"; echo \"the weather was \" . get_weather(3) . \".\\n\"; echo \"It is \" . celsius_to_fahrenheit(12) . \" degree today, \"; echo \"the weather is \" . get_weather(12) . \".\\n\"; echo \"It will be \" . celsius_to_fahrenheit(22) . \" degree tomorrow, \"; echo \"the weather would get \" . get_weather(22) . \"er.\\n\"; ในตวั อยา่ งเป็นการบอกอณุ ภมู ิและสภาพอากาศในแต่ละวนั โดยการแปลงองศาเซลเซียสไปเป็นองศาฟาเรนไฮตด์ ว้ ย ฟังกช์ นั celsius_to_fahrenheit() เพอ่ื นามาแสดงผล และตรวจสอบสภาพอากาศจากอณุ หภูมิดว้ ยฟังกช์ นั get_weather() $km = mph_to_kmph(36); echo \"The car is running at 36 mph or $km km/h.\\n\"; ในฟังกช์ นั mph_to_kmph() เป็ นฟังกช์ นั ในการแปลงความเร็วจากไมลต์ ่อชวั่ โมงเป็นกิโลเมตรต่อชว่ั โมง This is Marcus's profile, he has 3 friends. It was 37.4 degree yesterday, the weather was very cold. It is 53.6 degree today, the weather is cold. It will be 71.6 degree tomorrow, the weather would get warmer. The car is running at 36 mph or 57.93624 km/h. น่ีเป็นผลลพั ธ์เมื่อรันโปรแกรมในการเรียกใชง้ านฟังกช์ นั ฟังกช์ นั กบั ค่าเริ่มตน้ ของพารามิเตอร์
โดยปกติแลว้ ในการส่งค่าอากิวเมนตเ์ ขา้ มายงั ฟังกช์ นั จานวนของค่าท่ีส่งตอ้ งตรงกนั กบั พารามิเตอร์ของฟังกช์ นั ในภาษา PHP คุณสามารถ สร้างพารามิเตอร์กบั ค่าเร่ิมตน้ ได้ หรือท่ีเรียกกนั วา่ Default argument ซ่ึงเป็นทางเลือกในการเรียกใชง้ านฟังกช์ นั มาดูตวั อยา่ งของ Default argument ในภาษา PHP <?php function introduce($lang = \"PHP\") { echo \"I'm a \" . $lang . \" programmer.\\n\"; } function birth_date($month, $day, $year = 0) { ini_set('date.timezone', 'America/New_York'); $month_name = date('F', mktime(0, 0, 0, $month, 10)); if ($year == 0) { echo \"I was born in $month_name $day\\n\"; } else { echo \"I was born in $month_name $day, $year\\n\"; } } introduce(\"Java\"); introduce(); birth_date(11, 5); birth_date(11, 5, 1988); ?> ในตวั อยา่ ง เป็นการใชง้ านอากิวเมนตก์ บั คา่ เร่ิมตน้ ในภาษา PHP ในฟังกช์ นั introduce() เรามี $lang = \"PHP\" เป็นพารามิเตอร์ทม่ี ี การกาหนดคา่ เร่ิมตน้ ดงั น้นั น่ีเป็นรูปแบบของการเรียกใชฟ้ ังกช์ นั ท่ีเป็นไปได้ introduce(\"Java\"); introduce();
ในคาส่งั แรก เราไดเ้ รียกใชฟ้ ังกช์ นั introduce() ละส่งคา่ \"Java\" เป็ นอากิวเมนตท์ าให้ Default argument ถกู เพกิ เฉยๆ ไป ใน คาส่ังท่ีสองเราไดเ้ ราไดเ้ รียกใชฟ้ ังกช์ นั โดยท่ีไม่ไดส้ ่งอากิวเมนต์ ดงั น้นั Default argument ท่ีมีคา่ เท่ากบั \"PHP\" จึงถกู ใชง้ าน birth_date(11, 5); birth_date(11, 5, 1988); ต่อมาเป็นฟังกช์ นั birth_date() ซ่ึงมี Default argument คอื $year = 0 ในการเขา้ ไปยงั ฟังกช์ นั คา่ ท่ีไม่ใช่ Default จะตอ้ งถูกส่งท้งั หมด และค่าท่ีเป็น Default น้นั จะเป็นทางเลือก ในตวั อยา่ งเราสามารถเลือกที่จะส่งปี เกิดหรือไม่กไ็ ด้ I'm a Java programmer. I'm a PHP programmer. I was born in November 5 I was born in November 5, 1988 น่ีเป็นผลลพั ธ์ในการทางานของโปรแกรม ในการประกาศ Default argument น้นั สามารถมีไดต้ ้งั แต่ 1 หรือหลายอากิวเมนต์ ในการส่งคา่ เขา้ ไปยงั ฟังกช์ นั จานวนอากิวเมนต์ ท่ีส่งเขา้ ไปน้นั ตอ้ งมากกวา่ หรือเท่ากบั จานวนอากิวเมนตท์ ี่ไม่ใช้ Default และไม่เกินจานวนอากิวเมนตท์ ้งั หมด Passing by reference (การส่งค่าแบบอา้ งอิง) ในการส่งคา่ เขา้ ไปยงั ฟังกช์ นั โดยปกติแลว้ ภาษา PHP จะทาการคดั ลอกคา่ น้นั ไปใส่ในตวั แปรใหม่ เราเรียกการส่งค่าแบบน้ีวา่ Pass by value ในภาษา PHP คณุ สามารถส่งคา่ ไดโ้ ดยการส่งค่าแบบอา้ งอิง (Passing by reference) ซ่ึงเป็นการส่งตาแหน่งที่อยขู่ อง ขอ้ มูลเขา้ ไปแทน ทาใหก้ ารทางานรวดเร็ว และอานวยความสะดวกในกรณีท่ีตอ้ งการใหใ้ นฟังกช์ นั เปลีย่ นแปลงค่าภายนอก มาดูตวั อยา่ งการส่ง ค่าแบบ Passing by reference <?php function swap_ref(&$a, &$b) { $temp = $a; $a = $b; $b = $temp; } $a = 1; $b = 5;
echo \"Before swap: a = $a, b = $b\\n\"; swap_ref($a, $b); echo \"After swap: a = $a, b = $b\\n\"; ?> ในตวั อยา่ ง ฟังกช์ นั swap_ref() น้นั มีพารามิเตอร์เป็นแบบ Passing by reference เราใส่เคร่ืองหมาย & หนา้ ตวั แปร พารามิเตอร์ของฟังกช์ นั เช่น swap_ref(&$a, &$b) โดยจะทาตวั ในฟังกช์ นั ใชค้ ่าตาแหน่งเดียวกนั กบั ตวั แปรนอกฟังกช์ นั Before swap: a = 1, b = 5 After swap: a = 5, b = 1 น่ีเป็นผลลพั ธืของโปรแกรม เม่ือมีการเปลี่ยนแปลงค่าภายในฟังกช์ นั ตวั แปรภายนอกกเ็ ปลียน่ แปลงเช่นกนั หรือกลา่ วอกี นยั หน่ึง มนั เป็นตวั แปร เดียวกนั ท่ีทางานในสถานที่ท่ีแตกต่างกนั Recursive function (ฟังกช์ นั เรียกใชต้ วั เอง) Recursive function คอื การที่ฟังกช์ นั มีคณุ สมบตั ิในการเรียกใชง้ านตวั เองได้ เพอื่ บุรรลุผลการทางานบางอยา่ ง ฟังกช์ นั ประเภทน้ีก็ เหมื่อนฟังกช์ นั ปกติ แต่การทางานจะแตกต่างกนั คอื ฟังกช์ นั จะเรียกใชต้ วั เองจนกวา่ จะพบกบั เงื่อนที่เรียกวา่ ฺBase condition เพอ่ื สิ้นสุดการเรียกใชต้ วั เอง เราจะยกตวั อยา่ งกบั สถานการณ์สาหรับการใช้ Recursive function ในภาษา PHP เราจะเขยี นโปรแกรมสาหรับการคานวณหาค่าของ Factorial และ Fibonacci sequence ดว้ ย Recursive function <?php function fatorial($number) { if ($number == 0 || $number == 1) { return 1; } else { return $number * fatorial($number - 1); } } echo \"Factorail\\n\"; echo \"1! = \" . fatorial(1) . \"\\n\";
echo \"3! = \" . fatorial(3) . \"\\n\"; echo \"5! = \" . fatorial(5) . \"\\n\"; ?> ในตวั อยา่ ง เป็น Recursive function ในการหาคา่ Factorial เพราะวา่ สูตรในการหาค่า Factorial น้นั จะเป็นการนาคาตอบ ของตวั เลขก่อนหนา้ มาคูณกบั ตวั เลขปัจจุบนั ดงั น้นั เราจึงมาสามารถใช้ Recursive function สาหรับแกป้ ัญหาน้ีได้ โดยเรามี Base condition คือเมื่อค่าท่ีตอ้ งการหาเป็น 0 หรือ 1 จะส่งค่ากลบั เป็น 1 เพราะวา่ เราทราบวา่ 0! และ 1! น้นั มีค่าเท่ากบั 1 return $number * fatorial($number - 1); หลงั จากน้นั ฟังกช์ นั จะเรียกใชต้ วั มนั เองโดยการลดค่า $number ลงทีละ 1 จนกวา่ จะพบกบั Base condition Factorail 1! = 1 5! = 120 นี่เป็นผลการทางานของโปรแกรมหาคา่ Factorial ในภาษา PHP อีกตวั อยา่ งหน่ึงสาหรับ Recursive function ท่ีน่าสนใจคอื การหาลาดบั ของ Fibonacci number 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... ซ่ึงเป็นลาดบั อนุกรมของตวั เลข โดยตวั เลขปัจจุบนั น้นั จะเท่ากบั ผลรวมของลาดบั ตวั เลขสองตวั ก่อนหนา้ โดยตวั เลข ลาดบั เร่ิมตน้ คอื 0 และ 1 ซ่ึงเป็นตวั เลขแรกและตวั แลขทีสองของอนั ดบั นี่เป็นตวั อยา่ งของโปรแกรมในการหาลาดบั <?php function fibonacci($sequence) { if ($sequence == 1) { return 0; } else if ($sequence == 2) { return 1; } else { return fibonacci($sequence - 1) + fibonacci($sequence - 2); } } echo \"Fibonacci sequence: \";
echo \"0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...\\n\"; echo \"Sequence 3 = \" . fibonacci(3) . \"\\n\"; echo \"Sequence 8 = \" . fibonacci(8) . \"\\n\"; echo \"Sequence 10 = \" . fibonacci(10) . \"\\n\"; echo \"The first 20 sequences of the Fibonacci\\n\"; for ($i = 1; $i <= 20; $i++) { echo fibonacci($i) . \", \"; } echo \"...\"; ?> ในตวั อยา่ ง ฟังกช์ นั fibonacci() เป็นฟังกช์ นั ในการหาลาดบั ของ Fibonacci โดยการใส่ลาดบั ท่ตี อ้ งการเขา้ ไปในฟังกช์ นั Base condition ของฟังกช์ นั คือ 1 และ 2 และมีตวั เลขเริ่มตน้ เป็น 0 และ 1 ตามลาดบั return fibonacci($sequence - 1) + fibonacci($sequence - 2); น่ีเป็นสูตรในการหาคา่ ของลาดบั ท่ี i ของ Fibonacci ที่มีสูตรเป็น Ni = N(i - 1) + N(i - 2) ในรูปแบบของ Recursive function โดยฟังกช์ นั จะเรียกใชต้ วั เองมนั กวจ่ ะพบกบั Base condition Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... Sequence 3 = 1 Sequence 8 = 13 Sequence 10 = 34 The first 20 sequences of the Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, ... น่ีเป็นผลลพั ธ์ของโปรแกรม Fibonacci sequence ในตวั อยา่ ง ลาดบั ที่ 10 คือ 34 ซ่ึงเป็นผลรวมจากสองอนั ดบั ก่อนหนา้ คือ 9 และ 8 หรือ 13 + 21 และเรายงั แสดง 20 ลาดบั แรกของ Fibonacci Variable scope (ขอบเขตของตวั แปร) ในภาษา PHP เม่ือมีการสร้างและใชง้ านฟังกช์ นั น้นั คณุ ตอ้ งเขา้ ใจเกี่ยวกบั ขอบเขตการใชง้ านและการเขา้ ถงึ ตวั แปร ซ่ึงในภาษา PHP น้นั ตวั แปรภายในฟังกช์ นั จะไม่สามารถเขา้ ถึงตวั แปรภายนอกฟังกช์ นั ได้ นอกจากเราประกาศตวั แปรใหเ้ ป็น global variable
<?php $name = \"Marcus\"; function hello() { global $name; echo \"Hello \". $name . \"\\n\"; } hello(); ?>
Search
Read the Text Version
- 1 - 14
Pages: