メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

ฟังก์ชัน: Parameter และ Argument

บทความนี้อธิบายความแตกต่างระหว่าง Parameter (ตัวแปรที่ประกาศในส่วนหัวของฟังก์ชัน) และ Argument (ค่าที่ถูกส่งให้กับฟังก์ชันเมื่อเรียกใช้งาน) นอกจากนี้ยังอธิบายถึ...

ฟังก์ชัน: Parameter และ Argument

ในบทที่แล้ว เราได้เรียนรู้พื้นฐานของการสร้างและใช้งานฟังก์ชันใน PHP บทนี้จะเจาะลึกลงไปในรายละเอียดที่สำคัญอีกส่วนหนึ่ง นั่นคือความแตกต่างระหว่าง Parameter และ Argument ซึ่งเป็นสองคำที่มักถูกใช้สลับกัน แต่มีความหมายที่แตกต่างกันอย่างชัดเจน

Parameter คืออะไร?

Parameter คือ ตัวแปรที่ถูกประกาศไว้ในส่วนหัวของฟังก์ชัน เพื่อรับค่าจากภายนอกเมื่อฟังก์ชันถูกเรียกใช้งาน เปรียบเสมือนช่องทางที่ฟังก์ชันเตรียมไว้สำหรับรับข้อมูลที่จะนำไปประมวลผล

ตัวอย่าง:

<?php
function ทักทาย(string $ชื่อ) {
  echo "สวัสดี, " . $ชื่อ . "!\n";
}
?>

ในตัวอย่างนี้ $ชื่อ คือ Parameter ของฟังก์ชัน ทักทาย ฟังก์ชันนี้ต้องการ Parameter หนึ่งตัว ซึ่งเป็น String ที่ใช้เก็บชื่อของผู้ที่จะทักทาย

Argument คืออะไร?

Argument คือ ค่าที่ถูกส่งให้กับฟังก์ชันเมื่อฟังก์ชันถูกเรียกใช้งาน Argument จะถูกส่งไปยัง Parameter ที่สอดคล้องกันตามลำดับที่กำหนดไว้ในส่วนหัวของฟังก์ชัน เปรียบเสมือนข้อมูลที่ถูกส่งผ่านช่องทางที่ Parameter เตรียมไว้

ตัวอย่าง:

<?php
function ทักทาย(string $ชื่อ) {
  echo "สวัสดี, " . $ชื่อ . "!\n";
}

ทักทาย("สมชาย"); // "สมชาย" คือ Argument
ทักทาย("สมหญิง"); // "สมหญิง" คือ Argument
?>

ในตัวอย่างนี้ "สมชาย" และ "สมหญิง" คือ Argument ที่ถูกส่งให้กับฟังก์ชัน ทักทาย เมื่อฟังก์ชันถูกเรียกใช้งาน Argument "สมชาย" จะถูกส่งไปยัง Parameter $ชื่อ และ Argument "สมหญิง" ก็จะถูกส่งไปยัง Parameter $ชื่อ เช่นกัน

สรุปความแตกต่าง:

  • Parameter: ตัวแปรที่ประกาศไว้ในส่วนหัวของฟังก์ชัน
  • Argument: ค่าที่ถูกส่งให้กับฟังก์ชันเมื่อฟังก์ชันถูกเรียกใช้งาน

จำง่ายๆ ว่า Parameter คือ "สิ่งที่ฟังก์ชันต้องการ" ส่วน Argument คือ "สิ่งที่เราให้ฟังก์ชัน"

การส่ง Argument แบบ Pass by Value

โดยปกติแล้ว PHP จะส่ง Argument ให้กับฟังก์ชันแบบ Pass by Value หมายความว่า ฟังก์ชันจะได้รับสำเนา (copy) ของค่า Argument ไม่ใช่ตัวแปร Argument โดยตรง ดังนั้น การเปลี่ยนแปลงค่า Parameter ภายในฟังก์ชัน จะไม่มีผลกระทบต่อตัวแปร Argument ภายนอกฟังก์ชัน

ตัวอย่าง:

<?php
function เพิ่มค่า(int $ตัวเลข) {
  $ตัวเลข = $ตัวเลข + 10;
  echo "ภายในฟังก์ชัน: " . $ตัวเลข . "\n";
}

$x = 5;
เพิ่มค่า($x);
echo "ภายนอกฟังก์ชัน: " . $x . "\n";
?>

ผลลัพธ์:

ภายในฟังก์ชัน: 15
ภายนอกฟังก์ชัน: 5

จะเห็นได้ว่า แม้ว่าเราจะเพิ่มค่า $ตัวเลข ภายในฟังก์ชัน เพิ่มค่า แต่ค่าของตัวแปร $x ภายนอกฟังก์ชันยังคงเป็น 5 ไม่เปลี่ยนแปลง

การส่ง Argument แบบ Pass by Reference

ในบางครั้ง เราอาจต้องการให้ฟังก์ชันสามารถเปลี่ยนแปลงค่าของตัวแปร Argument ภายนอกฟังก์ชันได้ ในกรณีนี้ เราสามารถส่ง Argument แบบ Pass by Reference ได้ โดยใช้สัญลักษณ์ & (ampersand) นำหน้า Parameter ในส่วนหัวของฟังก์ชัน

เมื่อส่ง Argument แบบ Pass by Reference ฟังก์ชันจะได้รับอ้างอิง (reference) ไปยังตัวแปร Argument โดยตรง ดังนั้น การเปลี่ยนแปลงค่า Parameter ภายในฟังก์ชัน จะมีผลกระทบต่อตัวแปร Argument ภายนอกฟังก์ชัน

ตัวอย่าง:

<?php
function เพิ่มค่าอ้างอิง(int &$ตัวเลข) {
  $ตัวเลข = $ตัวเลข + 10;
  echo "ภายในฟังก์ชัน: " . $ตัวเลข . "\n";
}

$x = 5;
เพิ่มค่าอ้างอิง($x);
echo "ภายนอกฟังก์ชัน: " . $x . "\n";
?>

ผลลัพธ์:

ภายในฟังก์ชัน: 15
ภายนอกฟังก์ชัน: 15

สังเกตว่ามีการเพิ่ม & หน้า $ตัวเลข ใน function definition คราวนี้ค่าของตัวแปร $x ภายนอกฟังก์ชันได้ถูกเปลี่ยนแปลงเป็น 15 ตามการเปลี่ยนแปลงที่เกิดขึ้นภายในฟังก์ชัน เพิ่มค่าอ้างอิง แล้ว

ข้อควรระวัง: การใช้ Pass by Reference ควรทำด้วยความระมัดระวัง เนื่องจากอาจทำให้เกิดผลข้างเคียงที่ไม่คาดคิดได้ หากฟังก์ชันเปลี่ยนแปลงค่าของตัวแปร Argument โดยไม่ได้ตั้งใจ

สรุป

Parameter และ Argument เป็นส่วนประกอบสำคัญของการทำงานกับฟังก์ชันใน PHP การเข้าใจความแตกต่างระหว่างสองคำนี้ รวมถึงการส่ง Argument แบบ Pass by Value และ Pass by Reference จะช่วยให้เราสามารถเขียนโค้ดที่มีประสิทธิภาพและควบคุมการทำงานของฟังก์ชันได้อย่างแม่นยำยิ่งขึ้น

ในบทต่อไป เราจะเรียนรู้เกี่ยวกับ Return Type Declaration ซึ่งเป็นคุณสมบัติใหม่ใน PHP ที่ช่วยให้เราสามารถระบุชนิดข้อมูลที่ฟังก์ชันควรจะส่งกลับมาได้

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る