
PHP ๊ฐ์
>PHP - ์ด๊ธ
๐ PHP ์ด๊ธ - 3์ฃผ์ฐจ - 04 Null ๋ณํฉ ์ฐ์ฐ์ (??): ๋ณ์ ์กด์ฌ ์ฌ๋ถ ๊ฐ๊ฒฐํ๊ฒ ํ์ธํ๊ธฐ
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-06-27 02:55:06 | |
์กฐํ์ | 15 |
๐ PHP ์ด๊ธ - 3์ฃผ์ฐจ - 04 Null ๋ณํฉ ์ฐ์ฐ์ (??): ๋ณ์ ์กด์ฌ ์ฌ๋ถ ๊ฐ๊ฒฐํ๊ฒ ํ์ธํ๊ธฐ
PHP์์ #๋ณ์ ์ ๊ฐ์ด ์ค์ ๋์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ์ด #NULL ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋งค์ฐ ํํ ์์
์
๋๋ค. ์ ํต์ ์ผ๋ก isset()
ํจ์์ #์ผํญ_์ฐ์ฐ์ ๋ฅผ ์กฐํฉํด์ ์ด ์์
์ ์ํํ์ง๋ง, PHP 7๋ถํฐ๋ ํจ์ฌ ๋ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ **#Null_๋ณํฉ_์ฐ์ฐ์ (??
)**๊ฐ ๋์
๋์์ต๋๋ค. ์ด๋ฒ ํฌ์คํ
์์๋ #Null_๋ณํฉ_์ฐ์ฐ์ ์ ์ฌ์ฉ๋ฒ๊ณผ ์ฅ์ , ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ๋ฐฉ์๊ณผ์ ์ฐจ์ด์ ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. #Null_๋ณํฉ_์ฐ์ฐ์ (??
) ๋?
#Null_๋ณํฉ_์ฐ์ฐ์ (??
)๋ ์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์กด์ฌํ๊ณ #NULL ์ด ์๋๋ผ๋ฉด ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด๋ #๋ณ์ ์ #๊ธฐ๋ณธ๊ฐ ์ #ํ ๋น ํ๊ฑฐ๋, ํน์ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๋ ๋์ฒด ๊ฐ์ ์ ๊ณตํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ ํํ:
$result = $variable ?? "๊ธฐ๋ณธ๊ฐ";
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ #์ผํญ_์ฐ์ฐ์ ํํ๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค:
$result = isset($variable) ? $variable : "๊ธฐ๋ณธ๊ฐ";
์ฃผ๋ชฉํ ์ ์ isset()
ํจ์๊ฐ #๋ณ์ ์ ์กด์ฌ ์ฌ๋ถ์ #NULL ์ด ์๋์ง ์ฌ๋ถ๋ฅผ ๋ชจ๋ ํ์ธํ๋ค๋ ๊ฒ์
๋๋ค. #Null_๋ณํฉ_์ฐ์ฐ์ ์ญ์ ์ด์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ, ํจ์ฌ ๋ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
2. #Null_๋ณํฉ_์ฐ์ฐ์ ์ฌ์ฉ ์์
๋ค์ํ ์ํฉ์์ #Null_๋ณํฉ_์ฐ์ฐ์ ๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ 1: GET ๋๋ POST ์์ฒญ ๊ฐ ์ฒ๋ฆฌ
์ฌ์ฉ์ ์ ๋ ฅ ๊ฐ(์: URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ)์ด ๋์ด์ค์ง ์์ ๊ฒฝ์ฐ #์ค๋ฅ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ #๊ธฐ๋ณธ๊ฐ ์ ์ค์ ํ ๋ ์ ์ฉํฉ๋๋ค.
PHP
<?php
// URL: example.com?name=Alice
$username = $_GET['name'] ?? 'Guest';
echo "์ฌ์ฉ์ ์ด๋ฆ: " . $username . "<br>"; // ์ถ๋ ฅ: ์ฌ์ฉ์ ์ด๋ฆ: Alice
// URL: example.com
$city = $_GET['city'] ?? 'Seoul';
echo "๋์: " . $city . "<br>"; // ์ถ๋ ฅ: ๋์: Seoul (GET['city']๊ฐ ์์ผ๋ฏ๋ก)
?>
์์ 2: ์ ์๋์ง ์์ #๋ณ์ ์ฒ๋ฆฌ
#๋ณ์ ๊ฐ ์์ง #์ ์ ๋์ง ์์๊ฑฐ๋ #NULL ๋ก #ํ ๋น ๋์์ ๋ #๊ธฐ๋ณธ๊ฐ ์ ์ ๊ณตํฉ๋๋ค.
PHP
<?php
$userAge = null; // null๋ก ํ ๋น๋ ๋ณ์
$age = $userAge ?? 30;
echo "๋์ด (Null ํ ๋น): " . $age . "<br>"; // ์ถ๋ ฅ: ๋์ด (Null ํ ๋น): 30
// $userName์ ์ ์๋์ง ์์
$name = $userName ?? 'Unknown';
echo "์ด๋ฆ (์ ์๋์ง ์์): " . $name . "<br>"; // ์ถ๋ ฅ: ์ด๋ฆ (์ ์๋์ง ์์): Unknown
$email = "test@example.com";
$userEmail = $email ?? 'no_email@example.com';
echo "์ด๋ฉ์ผ (๊ฐ ์กด์ฌ): " . $userEmail . "<br>"; // ์ถ๋ ฅ: ์ด๋ฉ์ผ (๊ฐ ์กด์ฌ): test@example.com
?>
3. #Null_๋ณํฉ_์ฐ์ฐ์ ์ ์ฅ์
#๊ฐ๊ฒฐํ_์ฝ๋:
isset()
๊ณผ #์ผํญ_์ฐ์ฐ์ ๋ฅผ ๊ฒฐํฉํ ํํ๋ณด๋ค ํจ์ฌ ์งง๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.๊ธฐ์กด:
isset($var) ? $var : 'default';
๋ณ๊ฒฝ:
$var ?? 'default';
#๊ฐ๋ ์ฑ_ํฅ์: ์ฝ๋์ ์๋๊ฐ ๋ช ํํด์ ธ ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค. "์ด ๊ฐ์ด ์์ผ๋ฉด ๊ทธ๊ฑธ ์ฐ๊ณ , ์์ผ๋ฉด ๋ค์ ๊ธฐ๋ณธ๊ฐ์ ์จ๋ผ"๋ ์๋ฏธ๊ฐ ์ง๊ด์ ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
#๋ฐ๋ณต_ํํผ:
isset()
๊ณผ #์ผํญ_์ฐ์ฐ์ ๋ฅผ ์ฌ์ฉํ ๋๋ #๋ณ์ ์ด๋ฆ์ ๋ ๋ฒ ๋ฐ๋ณตํด์ผ ํ์ง๋ง, #Null_๋ณํฉ_์ฐ์ฐ์ ๋ ํ ๋ฒ๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
4. #Null_๋ณํฉ_์ฐ์ฐ์ ์ ๋ค๋ฅธ #์ฐ์ฐ์ ์ ์ฐจ์ด์
a) #์ผํญ_์ฐ์ฐ์ (?:
)์์ ๋น๊ต
#Null_๋ณํฉ_์ฐ์ฐ์ ๋ ํน์ ์กฐ๊ฑด(isset && non-null)์ ๋ํ #์ผํญ_์ฐ์ฐ์ ์ ํนํ๋ ํํ์ ๋๋ค.
$a ?? $b
๋$a
๊ฐisset()
์ ์ํดtrue
๋ฅผ ๋ฐํํ์ง ์์ผ๋ฉด$b
๋ฅผ ์ฌ์ฉํฉ๋๋ค.$a ? $b : $c
๋$a
๊ฐtrue
๋ก ํ๊ฐ๋๋ฉด$b
๋ฅผ,false
๋ก ํ๊ฐ๋๋ฉด$c
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ฐจ์ด๋ $a
๊ฐ 0
, ""
(๋น #๋ฌธ์์ด), false
์ผ ๋ ์ค์ํฉ๋๋ค.
PHP
<?php
$value1 = 0;
$result1_ternary = $value1 ? '๊ฐ์ด ์์' : '๊ฐ์ด ์์';
$result1_null_coalescing = $value1 ?? '๊ฐ์ด ์์';
echo "๊ฐ 0 (์ผํญ): " . $result1_ternary . "<br>"; // ์ถ๋ ฅ: ๊ฐ 0 (์ผํญ): ๊ฐ์ด ์์ (0์ false๋ก ํ๊ฐ)
echo "๊ฐ 0 (Null ๋ณํฉ): " . $result1_null_coalescing . "<br>"; // ์ถ๋ ฅ: ๊ฐ 0 (Null ๋ณํฉ): 0 (0์ isset์์ true)
$value2 = "";
$result2_ternary = $value2 ? '๊ฐ์ด ์์' : '๊ฐ์ด ์์';
$result2_null_coalescing = $value2 ?? '๊ฐ์ด ์์';
echo "๊ฐ "" (์ผํญ): " . $result2_ternary . "<br>"; // ์ถ๋ ฅ: ๊ฐ "" (์ผํญ): ๊ฐ์ด ์์ (""๋ false๋ก ํ๊ฐ)
echo "๊ฐ "" (Null ๋ณํฉ): " . $result2_null_coalescing . "<br>"; // ์ถ๋ ฅ: ๊ฐ "" (Null ๋ณํฉ): (๋น ๋ฌธ์์ด) (""๋ isset์์ true)
?>
isset()
์ #๋ณ์ ๊ฐ #์ ์ ๋์ด ์๊ณ #NULL ์ด ์๋ ๊ฒฝ์ฐ์๋ง true
๋ฅผ ๋ฐํํฉ๋๋ค. 0
์ด๋ ""
(๋น #๋ฌธ์์ด)์ #Null_๋ณํฉ_์ฐ์ฐ์ ์์ ์ ํจํ ๊ฐ์ผ๋ก ๊ฐ์ฃผ๋์ด ๋ฐํ๋ฉ๋๋ค. ๋ฐ๋ฉด #์ผํญ_์ฐ์ฐ์ ์ ์กฐ๊ฑด๋ถ์์๋ 0
์ด๋ ""
๊ฐ false
๋ก ํ๊ฐ๋ ์ ์์ต๋๋ค.
b) #Null_๋ณํฉ_ํ ๋น_์ฐ์ฐ์ (??=
) (PHP 7.4 ์ด์)
PHP 7.4๋ถํฐ๋ #Null_๋ณํฉ_ํ ๋น_์ฐ์ฐ์ (??=
)๊ฐ ์ถ๊ฐ๋์ด, #๋ณ์ ๊ฐ #NULL ์ด๊ฑฐ๋ #์ ์ ๋์ง ์์์ ๋๋ง #๊ธฐ๋ณธ๊ฐ ์ #ํ ๋น ํ๋๋ก ํฉ๋๋ค.
๊ธฐ๋ณธ ํํ:
$variable ??= "๊ธฐ๋ณธ๊ฐ";
์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋์ ๋์ผํฉ๋๋ค:
if (!isset($variable)) { $variable = "๊ธฐ๋ณธ๊ฐ"; }
์์:
PHP
<?php
$data = [];
// $data['key1']์ ์ ์๋์ง ์์์ผ๋ฏ๋ก 'default_value'๋ก ํ ๋น
$data['key1'] ??= 'default_value';
echo "Key1: " . $data['key1'] . "<br>"; // ์ถ๋ ฅ: Key1: default_value
$data['key2'] = 'existing_value';
// $data['key2']๋ ์ด๋ฏธ ์ ์๋์ด ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ๋์ง ์์
$data['key2'] ??= 'new_default';
echo "Key2: " . $data['key2'] . "<br>"; // ์ถ๋ ฅ: Key2: existing_value
?>
5. ์ค์ฒฉ #Null_๋ณํฉ_์ฐ์ฐ์
#Null_๋ณํฉ_์ฐ์ฐ์ ๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋์ฒด ๊ฐ ์ค์์ ์ฒ์์ผ๋ก #NULL ์ด ์๋ ๊ฐ์ ์ฐพ์ ๋ ์ ์ฉํฉ๋๋ค.
$result = $val1 ?? $val2 ?? $val3 ?? "์ต์ข
_๊ธฐ๋ณธ๊ฐ";
์ด ์ฝ๋๋ $val1
์ด #NULL ์ด ์๋๋ฉด $val1
์, ์๋๋ฉด $val2
๊ฐ #NULL ์ด ์๋๋ฉด $val2
๋ฅผ, ์๋๋ฉด $val3
์ด #NULL ์ด ์๋๋ฉด $val3
์, ๋ชจ๋ ๊ฒ์ด #NULL ์ด๋ฉด "์ต์ข
_๊ธฐ๋ณธ๊ฐ"
์ ๋ฐํํฉ๋๋ค.
PHP
<?php
$user_input = null;
$config_value = null;
$default_setting = "Default from config";
$final_value = $user_input ?? $config_value ?? $default_setting ?? "Hardcoded fallback";
echo "์ต์ข
๊ฐ: " . $final_value . "<br>"; // ์ถ๋ ฅ: ์ต์ข
๊ฐ: Default from config
?>
๊ฒฐ๋ก
#Null_๋ณํฉ_์ฐ์ฐ์ (??
)๋ PHP 7๋ถํฐ ๋์
๋ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ผ๋ก, #๋ณ์ ์ ์กด์ฌ ์ฌ๋ถ ๋ฐ #NULL ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ #๊ธฐ๋ณธ๊ฐ ์ ๊ฐ๊ฒฐํ๊ฒ #ํ ๋น ํ๋ ๋ฐ ํ์ํฉ๋๋ค. isset()
๊ณผ #์ผํญ_์ฐ์ฐ์ ๋ฅผ ์กฐํฉํ๋ ๊ธฐ์กด ๋ฐฉ์์ ๋นํด ์ฝ๋์ #๊ฐ๊ฒฐ์ฑ ๊ณผ #๊ฐ๋
์ฑ ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. PHP 7.4๋ถํฐ ์ถ๊ฐ๋ #Null_๋ณํฉ_ํ ๋น_์ฐ์ฐ์ (??=
)๋ ์ด ๊ธฐ๋ฅ์ #ํ ๋น ์ ํนํ์์ผ ๋์ฑ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ #์ฐ์ฐ์ ๋ค์ ์ ์ ํ ํ์ฉํ์ฌ ๋์ฑ ํจ์จ์ ์ด๊ณ ๊น๋ํ PHP ์ฝ๋๋ฅผ ์์ฑํ์๊ธธ ๋ฐ๋๋๋ค.