ตามปกติฟังก์ชันส่วนใหญ่ต้องการรับสารสนเทศจากผู้เรียกสำหรับการประมวลผล
โดยทั่วไปเรียกว่า พารามิเตอร์
ไวยากรณ์พื้นฐาน
การกำหนดฟังก์ให้รับพารามิเตอร์ส่งผ่านโดยการวางข้อมูล
ชื่อตัวแปรที่เก็บข้อมูลภายในวงเล็บหลังชื่อฟังก์ชัน การเรียกฟังก์ชันที่ประกอบด้วยพารามิเตอร์เขียนดังนี้
<?php
function
show_parameter($param1, $param2, $param3)
{
echo
<<<PARAM
รายการพารามิเตอร์
<br/>
param1:
$param1 <br/>
param2:
$param2 <br/>
param3:
$param3 <br/>
PARAM;
}
?>
พารามิเตอร์ที่ส่งไปยังฟังก์ชันแยกกันเครื่องหมายจุลภาคภายในวงเล็บ
โดยสามารถส่งเป็นนิพจน์สำหรับแต่ละพารามิเตอร์ด้วย ตัวแปร ค่าคงที่
ผลลัพธ์จากการคำนวณ รวมถึงการเรียกฟังก์ชัน
scope ของพารามิเตอร์จำกัดภายในฟังก์ชัน
ถ้าชื่อตัวแปรเหมือนกับตัวแปรใน scope ระดับอื่น พารามิเตอร์นี้
"ระบุ" เป็นตัวแปรภายในที่ไม่มีผลกับตัวแปรภายนอกฟังก์ชัน
การส่งผ่านโดยค่า(By
Value)
ตามปกติการส่งผ่านพารามิเตอร์ไปยังฟังก์ชันเป็นการส่งผ่านค่า
การเปลี่ยนแปลงจะจำกัดภายในเฉพาะภายในฟังก์ชัน
ตัวอย่างฟังก์ชัน
new_value () ที่ยอมให้เพิ่มค่า อาจจะเขียนคำสั่งดังนี้
<?php
function
new_value($value, $increment= 1)
{
$value =
$value + $increment;
}
$value = 10
;
new_value($value);
echo
"$value<br/>\n";
?>
คำสั่งนี้ใช้ไม่ได้
ผลลัพธ์จะเป็น "10" ค่าใหม่ของ $value ไม่มีการเปลี่ยนแปลง
สิ่งนี้เป็นเพราะกฎ
scope คำสั่งนี้สร้างตัวแปรเรียกว่า $value เป็น
10 เมื่อเรียกฟังก์ชัน new_value () ตัวแปร
$value ในฟังก์ชันได้รับการสร้างเมื่อเรียกฟังก์ชัน
ค่า 1 ได้รับการเพิ่มให้กับตัวแปร ดังนั้นค่าของ $value
คือ 11 ภายในฟังก์ชัน จนกระทั่งสิ้นสุดฟังก์ชัน
แล้วกลับไปยังคำสั่งที่เรียกภายในคำสั่งนี้ ตัวแปร $value เป็นอีกตัวแปร
global scope และไม่มีการเปลี่ยนแปลง
การส่งผ่านโดยการอ้างอิง
(By Reference)
ตามตัวอย่างฟังก์ชัน
new_value ถ้าต้องการให้ฟังก์ชันเปลี่ยนแปลงค่าได้
มีวิธีหนึ่งในการแก้ไขคือ ประกาศ $value ในฟังก์ชันเป็น global แต่หมายความว่าในการใช้ฟังก์ชันนี้
ตัวแปรที่ต้องการเพิ่มค่าต้องตั้งชื่อเป็น $value แต่มีวิธีดีกว่าคือ
ใช้การส่งผ่านโดยการอ้างอิง
การอ้างอิงไปตัวแปรต้นทางแทนที่มีค่าของตัวเอง
การปรับปรุงไปยังการอ้างอิงจะมีผลกับตัวแปรต้นทางด้วย
การระบุพารามิเตอร์ที่ใช้การส่งผ่านโดยการอ้างอิงให้วาง
ampersand (&) หน้าชื่อพารามิเตอร์ในข้อกำหนดฟังก์ชัน
ตัวอย่าง
new_value () ได้รับปรับปรุงให้มี 1
พารามิเตอร์ส่งผ่านโดยการอ้างอิงและทำงานได้อย่างถูกต้อง
<?php
function
new_value(&$value, $increment=1)
{
$value =
$value + $increment;
}
?>
คำสั่งทดสอบฟังก์ชัน
ให้พิมพ์ 10 ก่อนการเรียก increment () และ
11 ภายหลัง
ในการส่งค่าโดยการอ้างอิงต้องส่งเป็นตัวแปรไม่สามารถกำหนดค่าคงที่โดยตรง
จำนวนตัวแปรของพารามิเตอร์
การส่งผ่านพารามิเตอร์ไปยังฟังก์ชันนั้น
การควบคุมของ PHP ได้กำหนดฟังก์ชันจำนวนหนึ่งให้ยอมรับจำนวนตัวแปรของพารามิเตอร์
ได้แก่ func_num_args, func_get_arg และ func_get_args
func_num_args()
บอกจำนวนพารามิเตอร์ไปยังฟังก์ชันที่เรียก func_get_arg() แสดงค่าของพารามิเตอร์ตามดัชนี
และ func_get_args() ส่งออก array ของพารามิเตอร์
<?php
function
show_pass_value()
{
$idx =
count(func_get_args());
echo " จำนวนพารามิเตอร์
$idx <br/>\n";
if ($idx
> 0)
echo ">> ใช้ฟังก์ชัน
func_get_arg<br/>\n";
for ($i = 0
; $i < $idx; $i++)
{
echo " พารามิเตอร์ที่
$i ค่า: ". func_get_arg($i)."<br/>\n";
}
if ($idx
> 0)
echo ">> ใช้ฟังก์ชัน
func_get_args<br/>\n";
$params =
func_get_args();
foreach
($params as $index => $val)
{
echo " พารามิเตอร์ที่
$index ค่า: $val<br/>\n";
}
echo "
*********<br/>\n";
}
$x = 4 ;
show_pass_value("one",
"two", 3 , $x, " ห้า" , " หก")
;
show_pass_value();
?>
ผลลัพธ์
จำนวนพารามิเตอร์
6
>> ใช้ฟังก์ชัน
func_get_arg
พารามิเตอร์ที่
0 ค่า: one
พารามิเตอร์ที่
1 ค่า: two
พารามิเตอร์ที่
2 ค่า: 3
พารามิเตอร์ที่
3 ค่า: 4
พารามิเตอร์ที่
4 ค่า: ห้า
พารามิเตอร์ที่
5 ค่า: หก
>> ใช้ฟังก์ชัน
func_get_args
พารามิเตอร์ที่
0 ค่า: one
พารามิเตอร์ที่
1 ค่า: two
พารามิเตอร์ที่
2 ค่า: 3
พารามิเตอร์ที่
3 ค่า: 4
พารามิเตอร์ที่
4 ค่า: ห้า
พารามิเตอร์ที่
5 ค่า: หก
*********
จำนวนพารามิเตอร์
0
*********
ไม่มีความคิดเห็น:
แสดงความคิดเห็น