์จ๋ผ์ธ ๊ฐ์
>PHP - ์ด๊ธ
๐ PHP ์ด๊ธ - 5์ฃผ์ฐจ: ํจ์ - 02 ๋งค๊ฐ๋ณ์ (๊ธฐ๋ณธ๊ฐ, ๊ฐ๋ณ ์ธ์)
				์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
 - ๋ผ์ด์ ์ค: free
 - ์ด์์ฒด์ :
 - ํ์ผ ํฌ๊ธฐ: 0
 
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
 - ๋ค์ด๋ก๋ ์: 1
 - ์กฐํ์: 63
 
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
 - ๋ฑ๋ก์ผ: 2025-06-28 17:08:21
 
- ์ค๋ช
๐ PHP ์ด๊ธ - 5์ฃผ์ฐจ: ํจ์ - 02 ๋งค๊ฐ๋ณ์ (๊ธฐ๋ณธ๊ฐ, ๊ฐ๋ณ ์ธ์)
์๋ ํ์ธ์! #PHP ์ด๊ธ ๊ฐ์ข 5์ฃผ์ฐจ ๋ ๋ฒ์งธ ์๊ฐ์ ๋๋ค. ์ง๋ ์๊ฐ์๋ #PHP #ํจ์ ์ ๊ธฐ๋ณธ์ ์ธ ์ ์์ ํธ์ถ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ ํจ์๋ฅผ ๋์ฑ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋งค๊ฐ๋ณ์์ ๊ณ ๊ธ ํ์ฉ๋ฒ, ํนํ ๊ธฐ๋ณธ๊ฐ ๋งค๊ฐ๋ณ์์ ๊ฐ๋ณ ์ธ์์ ๋ํด ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ (Default Parameter Values)
ํจ์๋ฅผ ์ ์ํ ๋ ํน์  #๋งค๊ฐ๋ณ์ ์ #๊ธฐ๋ณธ๊ฐ ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํจ์๋ฅผ ํธ์ถํ ๋ ํด๋น ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํ์ง ์์๋ ๋ฏธ๋ฆฌ ์ค์ ๋ ๊ธฐ๋ณธ๊ฐ์ด ์๋์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ํจ์ ํธ์ถ ์ ์ธ์๋ฅผ ์๋ตํ ์ ์๊ฒ ํ์ฌ ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๊ณ , ์ ์ฐ์ฑ์ ๋์ฌ์ค๋๋ค.
1.1. ๊ธฐ๋ณธ๊ฐ ์ค์  ๋ฐฉ๋ฒ
๋งค๊ฐ๋ณ์ ์ด๋ฆ ๋ค์ = ์ฐ์ฐ์์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํฉ๋๋ค.
PHP
<?php
function sendMessage($message, $recipient = "๋ชจ๋  ์ฌ์ฉ์") {
    echo $recipient . "์๊ฒ ๋ฉ์์ง: " . $message . "<br>";
}
// 1. recipient์ ๊ฐ์ ์ ๋ฌํ์ง ์์ ๊ฒฝ์ฐ: ๊ธฐ๋ณธ๊ฐ "๋ชจ๋  ์ฌ์ฉ์"๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
sendMessage("์๋
ํ์ธ์!");
// ์ถ๋ ฅ: ๋ชจ๋  ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง: ์๋
ํ์ธ์!
echo "<br>";
// 2. recipient์ ๊ฐ์ ์ ๋ฌํ ๊ฒฝ์ฐ: ์ ๋ฌ๋ ๊ฐ์ด ๊ธฐ๋ณธ๊ฐ์ ๋ฎ์ด์๋๋ค.
sendMessage("์ค๋ ๋ ์จ๊ฐ ์ข๋ค์.", "๋ฐ์ํฌ");
// ์ถ๋ ฅ: ๋ฐ์ํฌ์๊ฒ ๋ฉ์์ง: ์ค๋ ๋ ์จ๊ฐ ์ข๋ค์.
?>
1.2. ๊ธฐ๋ณธ๊ฐ ๋งค๊ฐ๋ณ์์ ์์น
์ค์: ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ ํญ์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๋งค๊ฐ๋ณ์ ๋ค์ ์์นํด์ผ ํฉ๋๋ค. PHP๋ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋ ์ธ์๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋งค๊ฐ๋ณ์์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
PHP
<?php
// ์ฌ๋ฐ๋ฅธ ์์: $param1์ ํ์, $param2๋ ์ ํ (๊ธฐ๋ณธ๊ฐ)
function correctOrder($param1, $param2 = "๊ธฐ๋ณธ๊ฐ") {
    echo "Param1: " . $param1 . ", Param2: " . $param2 . "<br>";
}
correctOrder("ํ์๊ฐ"); // Param1: ํ์๊ฐ, Param2: ๊ธฐ๋ณธ๊ฐ
correctOrder("ํ์๊ฐ", "์๋ก์ด๊ฐ"); // Param1: ํ์๊ฐ, Param2: ์๋ก์ด๊ฐ
echo "<br>";
// ์๋ชป๋ ์์: Syntax Error ๋ฐ์
// function wrongOrder($param1 = "๊ธฐ๋ณธ๊ฐ", $param2) {
//     echo "Param1: " . $param1 . ", Param2: " . $param2 . "<br>";
// }
// wrongOrder("๊ฐ1", "๊ฐ2"); // PHP Fatal error:  Required parameter $param2 follows optional parameter $param1
?>
์๋ชป๋ ์์์ฒ๋ผ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๋งค๊ฐ๋ณ์ ๋ค์ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๋งค๊ฐ๋ณ์๊ฐ ์ค๋ฉด PHP๋ ์ด๋ค ์ธ์๊ฐ ์ด๋ค ๋งค๊ฐ๋ณ์์ ํ ๋น๋์ด์ผ ํ ์ง ์ ์ ์์ผ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
2. ๊ฐ๋ณ ์ธ์ ํจ์ (Variable-length Argument Lists)
๋๋ก๋ ํจ์๊ฐ ๋ฐ์ #์ธ์ ์ ๊ฐ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ซ์์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๋ ํจ์๋ ๋ช ๊ฐ์ ์ซ์๊ฐ ์ ๋ฌ๋ ์ง ์ ์ ์์ต๋๋ค. #PHP 5.6๋ถํฐ๋ ... (์คํ๋ซ ์ฐ์ฐ์, Splat Operator)๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๊ฐ #๊ฐ๋ณ ์ธ์ ๋ฅผ ๋ฐ์ ์ ์๋๋ก ์ ์ํ  ์ ์์ต๋๋ค.
2.1. ๊ฐ๋ณ ์ธ์ ์ ์ ๋ฐฉ๋ฒ
๋งค๊ฐ๋ณ์ ์ด๋ฆ ์์ ...๋ฅผ ๋ถ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ๋ฌ๋ ๋ชจ๋  ์ธ์๊ฐ ํด๋น ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ๋ฐฐ์ด๋ก ํจ์ ๋ด์์ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
PHP
<?php
function sumAll(...$numbers) { // ...$numbers๋ ๋ฐฐ์ด ํํ๋ก ๋ชจ๋  ์ธ์๋ฅผ ๋ฐ์ต๋๋ค.
    $total = 0;
    foreach ($numbers as $number) {
        $total += $number;
    }
    return $total;
}
echo "ํฉ๊ณ 1: " . sumAll(1, 2, 3) . "<br>";
// ์ถ๋ ฅ: ํฉ๊ณ 1: 6 (sumAll ํจ์ ๋ด๋ถ์์ $numbers๋ [1, 2, 3] ๋ฐฐ์ด์ด ๋ฉ๋๋ค.)
echo "ํฉ๊ณ 2: " . sumAll(10, 20, 30, 40, 50) . "<br>";
// ์ถ๋ ฅ: ํฉ๊ณ 2: 150 ($numbers๋ [10, 20, 30, 40, 50] ๋ฐฐ์ด์ด ๋ฉ๋๋ค.)
echo "ํฉ๊ณ 3: " . sumAll(5) . "<br>";
// ์ถ๋ ฅ: ํฉ๊ณ 3: 5 ($numbers๋ [5] ๋ฐฐ์ด์ด ๋ฉ๋๋ค.)
echo "ํฉ๊ณ 4: " . sumAll() . "<br>";
// ์ถ๋ ฅ: ํฉ๊ณ 4: 0 ($numbers๋ ๋น ๋ฐฐ์ด []์ด ๋ฉ๋๋ค.)
?>
2.2. ๊ฐ๋ณ ์ธ์์ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์์ ์กฐํฉ
๊ฐ๋ณ ์ธ์๋ ๋ค๋ฅธ ์ผ๋ฐ ๋งค๊ฐ๋ณ์์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ๋ณ ์ธ์ ๋งค๊ฐ๋ณ์๋ ํญ์ ๋ง์ง๋ง์ ์์นํด์ผ ํฉ๋๋ค.
PHP
<?php
function createPlaylist($playlistName, ...$songs) {
    echo "ํ๋ ์ด๋ฆฌ์คํธ: " . $playlistName . "<br>";
    if (empty($songs)) {
        echo "์ด ํ๋ ์ด๋ฆฌ์คํธ์๋ ์์ง ๋
ธ๋๊ฐ ์์ต๋๋ค.<br>";
    } else {
        echo "ํฌํจ๋ ๋
ธ๋:<br>";
        foreach ($songs as $song) {
            echo "- " . $song . "<br>";
        }
    }
    echo "<br>";
}
createPlaylist("๋์ ์ฆ๊ฒจ์ฐพ๊ธฐ", "Dynamite", "Butter", "Permission to Dance");
// ์ถ๋ ฅ:
// ํ๋ ์ด๋ฆฌ์คํธ: ๋์ ์ฆ๊ฒจ์ฐพ๊ธฐ
// ํฌํจ๋ ๋
ธ๋:
// - Dynamite
// - Butter
// - Permission to Dance
createPlaylist("ํด์ ์์
");
// ์ถ๋ ฅ:
// ํ๋ ์ด๋ฆฌ์คํธ: ํด์ ์์
// ์ด ํ๋ ์ด๋ฆฌ์คํธ์๋ ์์ง ๋
ธ๋๊ฐ ์์ต๋๋ค.
?>
2.3. ๋ฐฐ์ด์ ๊ฐ๋ณ ์ธ์๋ก ์ ๋ฌํ๊ธฐ
์ด๋ฏธ ๋ฐฐ์ด๋ก ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ณ ์ธ์ ํจ์์ ์ ๋ฌํ  ๋๋ ๋ค์ ... ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ "ํผ์ณ์(unpack)" ๊ฐ๋ณ ์ธ์๋ก ์ ๋ฌํ  ์ ์์ต๋๋ค.
PHP
<?php
$numbersToAdd = [100, 200, 300];
echo "๋ฐฐ์ด ํฉ๊ณ: " . sumAll(...$numbersToAdd) . "<br>";
// ์ถ๋ ฅ: ๋ฐฐ์ด ํฉ๊ณ: 600
// sumAll(100, 200, 300)๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
?>
๊ฒฐ๋ก
์ด๋ฒ #PHP ์ด๊ธ ๊ฐ์ข์์๋ #ํจ์ ์ #๋งค๊ฐ๋ณ์ ๋ฅผ ๋์ฑ ์ ์ฐํ๊ฒ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ธ #๊ธฐ๋ณธ๊ฐ ๋งค๊ฐ๋ณ์์ #๊ฐ๋ณ ์ธ์์ ๋ํด ๊น์ด ์๊ฒ ์์๋ณด์์ต๋๋ค. ์ด ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ํจ์๋ฅผ ๋ ๊ฐ๋ ฅํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ฃผ๋ฉฐ, ๋ค์ํ ์ํฉ์ ๋์ํ ์ ์๋ ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค์  ์ฝ๋์ ์ ์ฉํด๋ณด๋ฉด์ ์๋ฌํ์๊ธธ ๋ฐ๋๋๋ค.