การกำหนดฟังก์ชันใหม่ใน PHP ทำได้โดยการระบุ function ก่อนเริ่มเขียนโปรแกรมแสดงการทำงาน อย่างไรก็ตามข้อควรระวังคือตัวแปรที่สร้างขึ้นมาใหม่ใน Local จะอยู่ในขอบเขตของฟังก์ชันที่สร้างขึ้นเท่านั้น (ดูรายละเอียดเพิ่มเติมในขอบเขตตัวแปร ) ตัวอย่างการกำหนดฟังก์ชันใหม่ เช่น
| <? function max($a,$b) { if ($a>$b) $max = $a; else $max = $b; return $max; } ?> |
จากตัวอย่างในการผ่านค่า Parameter ข้างต้น เราจะพบการผ่านค่า Parameter ที่เรียกว่า By VALUE คือการแก้ไขข้อมูลภายในฟังก็ชันไม่มีผลต่อข้อมูลจริงชุดเดิมแล้ว ในส่วนนี้เราจะกล่าวถึงการผ่านค่า Parameter แบบ By REFERENCE ซึ่งการอ้างอิงหรือเปลี่ยนตัวแปรจะเป็นการอ้างอิงและแก้ไขทีข้อมูลชุดเดิม ดังตัวอย่างต่อไปนี้
| <? function swap(&$a,&$b) // ข้อสังเกตที่ตัวแปรจะมีเครื่องหมาย ampasand “&” อยู่ด้วย { $tmp=$a; $a=$b; $b=$tmp; } $x=5; $y=10; swap($x,$y); // จะได้ค่า x เป็น 10 และ ค่า y เป็น 5 ?> |
นอกจากนี้ PHP ยังสนับสนุนการใช้งาน Default Argument เช่นเดียวกันกับภาษา C++ ด้วย ดังตัวอย่างต่อไปนี้
| <? function cook($time,$food="chicken"); { echo "Cook $food in $time mins"; } cook(10); // จะแสดง Cook chicken in 10 mins; cook(10,"fish" ); // จะแสดง Cook fish in 10 mins; ?> |
** ข้อควรระวัง หากมีการใช้ Default Argument ร่วมกับการใช้งานปกติ ควรให้ตัวแปร Argument ที่มีการระบุค่า Default อยู่ทางขวามือเสมอ
ใน PHP 4 ผู้เขียนสามารถที่จะเขียนโปรแกรมให้รับข้อมูลในลักษณะที่มีตัวแปรไม่จำกัดได้โดยอาศัยการทำงานร่วมกับฟังก์ชัน func_num_args(), func_get_arg(), and func_get_args() ซึ่งจะแสดงจำนวน Argument และ ค่าที่ได้รับตามลำดับ ดังตัวอย่างต่อไปนี้
| <? function cook(); { $numargs = func_num_args(); echo "Cook $numargs of food(s)"; if ($numargs >= 2) { echo "Dish No.2 is: " . func_get_arg (1) . "<br>\n"; } $arg_list = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo "Disk $i+1 is: " . $arg_list[$i] . "<br>\n"; } } cook("chicken","fish","pork"); ?> |
โดยปกติการคืนค่าใน PHP นั้นจะทำได้โดยการใช้คำสั่ง return ซึ่งจะกระทำได้เพียงค่าเดียวเท่านั้น อย่างไรก็ตามหากผู้ใช้ต้องการจะคืนค่ามากกว่า 1 ค่าอาจจะทำได้โดยการคืนค่าเป็น Array 1 ชุดก็ได้ ดังตัวอย่างต่อไปนี้
| <? function getuserinfo() { return array("krerk","piromsopa"); } $userinfo = getuserinfo() echo $userinfo[0]; echo $userinfo[1]; ?> |
นอกจากการสนับสนุน ตัวแปรตัวแปร (Variable Variable ) ซึ่งทำงานในลักษณะของ Pointer แล้วPHP ยังสนับสนุนการใช้ตัวแปรฟังก์ชันที่มีลักษณะเหมือนกับ Pointer to ฟังก์ชั่นอีกด้วย ดังตัวอย่างต่อไปนี้
| <? function getten() { return 10; } function isone($x=0) { return ($x==1); } $func = "getten"; $val = $func(); $func = "isone"; $func("10"); ?> |