0Pricing
PHP Academy · บทเรียน

พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน

ใช้ค่าเริ่มต้นและอาร์กิวเมนต์จำนวนไม่แน่นอนในฟังก์ชัน PHP

พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

ค่าเริ่มต้นของพารามิเตอร์

ค่าเริ่มต้นช่วยให้ผู้เรียกละเว้นอาร์กิวเมนต์ได้ ระบบจะใช้ค่าเริ่มต้นเมื่อไม่มีการส่งอาร์กิวเมนต์มา:

<?php
function createUser(string $name, string $role = 'viewer'): string {
    return "$name ($role)";
}

echo createUser('Alice');          // Alice (viewer)
echo createUser('Bob', 'admin');   // Bob (admin)

กฎของค่าเริ่มต้น

กฎสำคัญสำหรับพารามิเตอร์ที่มีค่าเริ่มต้น:

  • พารามิเตอร์ที่มีค่าเริ่มต้นต้องอยู่ หลังพารามิเตอร์ที่จำเป็น
  • ค่าเริ่มต้นต้องเป็นนิพจน์ค่าคงที่ — ไม่ใช่การเรียกฟังก์ชันหรือตัวแปร
  • อาร์กิวเมนต์แบบระบุชื่อใน PHP 8 ผ่อนปรนข้อกำหนดเรื่องลำดับ

พารามิเตอร์ที่รับค่า NULL ได้

ใช้ ?type เพื่ออนุญาตให้ NULL เป็นอาร์กิวเมนต์ที่ถูกต้อง โดยมี NULL เป็นค่าเริ่มต้น:

<?php
function findUser(?int $id = null): string {
    if ($id === null) {
        return 'Searching all users';
    }
    return "User #$id";
}

echo findUser();    // Searching all users
echo findUser(42);  // User #42

ฟังก์ชันแบบรับอาร์กิวเมนต์หลายรายการด้วย ...

ใช้ ... ก่อนพารามิเตอร์เพื่อรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้เป็นอาร์เรย์:

<?php
function sum(int ...$numbers): int {
    return array_sum($numbers);
}

echo sum(1, 2, 3);        // 6
echo sum(10, 20, 30, 40); // 100

Variadic พร้อมพารามิเตอร์ที่จำเป็น

คุณสามารถผสมพารามิเตอร์ที่จำเป็นกับพารามิเตอร์แบบ Variadic ไว้ท้ายสุดได้:

<?php
function logMessage(string $level, string ...$messages): void {
    foreach ($messages as $msg) {
        echo "[$level] $msg" . PHP_EOL;
    }
}

logMessage('INFO', 'App started', 'Config loaded');

ตัวดำเนินการกระจายในการเรียก

ใช้ ... เมื่อเรียกฟังก์ชัน เพื่อกระจายอาร์เรย์ให้เป็นอาร์กิวเมนต์แต่ละรายการ:

<?php
function add3(int $a, int $b, int $c): int {
    return $a + $b + $c;
}

$args = [1, 2, 3];
echo add3(...$args);  // 6

$extra = [4, 5];
echo add3(1, ...$extra);  // 10

อาร์กิวเมนต์แบบระบุชื่อ (PHP 8)

อาร์กิวเมนต์แบบระบุชื่อช่วยให้คุณส่งค่าด้วยชื่อพารามิเตอร์ โดยไม่ต้องสนใจลำดับ:

<?php
function createTag(string $tag, string $content, string $class = ''): string {
    $cls = $class ? " class=\"$class\"" : '';
    return "<$tag$cls>$content</$tag>";
}

// Skip $class, pass $content by name
echo createTag(content: 'Hello', tag: 'p');
// <p>Hello</p>

อาร์กิวเมนต์แบบระบุชื่อกับฟังก์ชันในตัว

อาร์กิวเมนต์แบบระบุชื่อใช้กับฟังก์ชันในตัวของ PHP ได้เช่นกัน:

<?php
$arr = [3, 1, 4, 1, 5];

// Traditional positional
$result1 = array_slice($arr, 1, 3);

// Named arguments
$result2 = array_slice(array: $arr, offset: 1, length: 3);

print_r($result1); // [1, 4, 1]

func_get_args() แบบเดิม

ก่อนมีรูปแบบ Variadic ใน PHP 5.6 จะใช้ func_get_args() เพื่อเข้าถึงอาร์กิวเมนต์ทั้งหมด คุณอาจพบรูปแบบนี้ในโค้ดเดิม:

<?php
function legacySum(): int {
    $args = func_get_args();
    return array_sum($args);
}

echo legacySum(1, 2, 3, 4);  // 10
// Modern: use int ...$numbers instead

Variadic ที่ระบุชนิด

ผสานการระบุชนิดเข้ากับพารามิเตอร์แบบ Variadic เพื่อรับข้อมูลเข้าอย่างเคร่งครัด:

<?php
declare(strict_types=1);

function joinStrings(string $sep, string ...$parts): string {
    return implode($sep, $parts);
}

echo joinStrings('-', 'a', 'b', 'c');  // a-b-c
// joinStrings('-', 'a', 42); // TypeError in strict mode

การผสมค่าเริ่มต้นกับอาร์กิวเมนต์แบบระบุชื่อ

อาร์กิวเมนต์แบบระบุชื่อและค่าเริ่มต้นทำงานร่วมกันเพื่อให้มีความยืดหยุ่นสูงสุด:

<?php
function sendEmail(
    string $to,
    string $subject,
    string $body = '',
    bool   $html  = false
): bool {
    // simulate send
    return true;
}

// Skip $body, pass $html by name
sendEmail('a@b.com', 'Hi', html: true);

ตรวจสอบความเข้าใจ

ตัวดำเนินการ ... ทำหน้าที่อะไรในนิยามฟังก์ชัน PHP

ทบทวน: พารามิเตอร์ค่าเริ่มต้นและ Variadic

สรุป:

  • ค่าเริ่มต้นทำให้พารามิเตอร์เป็นตัวเลือกได้
  • พารามิเตอร์ที่มีค่าเริ่มต้นต้องอยู่หลังพารามิเตอร์ที่จำเป็น
  • ?type อนุญาตให้ใช้ NULL พร้อมค่าเริ่มต้นที่เป็นตัวเลือก
  • ...$args รวบรวมอาร์กิวเมนต์แบบ Variadic ไว้ในอาร์เรย์
  • ตัวดำเนินการกระจาย ...$arr ขยายอาร์เรย์ ณ จุดเรียก
  • อาร์กิวเมนต์แบบระบุชื่อ (PHP 8) ส่งค่าด้วยชื่อ ไม่ใช่ด้วยตำแหน่ง

คำถามที่พบบ่อย

บทเรียน “พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน”

ใช้ค่าเริ่มต้นและอาร์กิวเมนต์จำนวนไม่แน่นอนในฟังก์ชัน PHP คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดและเรียกใช้ฟังก์ชัน
  2. พารามิเตอร์ค่าเริ่มต้นและพารามิเตอร์จำนวนไม่แน่นอน
  3. ขอบเขตตัวแปร: ภายในและส่วนกลาง
  4. ฟังก์ชันไม่ระบุชื่อและโคลสเชอร์
← กลับไปที่ PHP Academy