๋ฃจ์  ์†Œํ”„ํŠธ ๋กœ๊ณ 

216.73.216.80 TODAY : 144

PHP ๊ฐ•์˜

 > 

PHP - ์ดˆ๊ธ‰

๐Ÿ“š PHP ์ดˆ๊ธ‰ - 3์ฃผ์ฐจ - 04 Null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž (??): ๋ณ€์ˆ˜ ์กด์žฌ ์—ฌ๋ถ€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ™•์ธํ•˜๊ธฐ

๐Ÿ“š 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_๋ณ‘ํ•ฉ_์—ฐ์‚ฐ์ž (??) ๋ž€?

uploadImage


#Null_๋ณ‘ํ•ฉ_์—ฐ์‚ฐ์ž (??)๋Š” ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์กด์žฌํ•˜๊ณ  #NULL ์ด ์•„๋‹ˆ๋ผ๋ฉด ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” #๋ณ€์ˆ˜ ์— #๊ธฐ๋ณธ๊ฐ’ ์„ #ํ• ๋‹น ํ•˜๊ฑฐ๋‚˜, ํŠน์ • ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋Œ€์ฒด ๊ฐ’์„ ์ œ๊ณตํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ˜•ํƒœ:

$result = $variable ?? "๊ธฐ๋ณธ๊ฐ’";

์œ„ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ #์‚ผํ•ญ_์—ฐ์‚ฐ์ž ํ‘œํ˜„๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค:

$result = isset($variable) ? $variable : "๊ธฐ๋ณธ๊ฐ’";

์ฃผ๋ชฉํ•  ์ ์€ isset() ํ•จ์ˆ˜๊ฐ€ #๋ณ€์ˆ˜ ์˜ ์กด์žฌ ์—ฌ๋ถ€์™€ #NULL ์ด ์•„๋‹Œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. #Null_๋ณ‘ํ•ฉ_์—ฐ์‚ฐ์ž ์—ญ์‹œ ์ด์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ํ›จ์”ฌ ๋” ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.



2. #Null_๋ณ‘ํ•ฉ_์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ์˜ˆ์‹œ

uploadImage

๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ #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_๋ณ‘ํ•ฉ_์—ฐ์‚ฐ์ž ์˜ ์žฅ์ 

uploadImage


  • #๊ฐ„๊ฒฐํ•œ_์ฝ”๋“œ: 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 ์ด์ƒ)

uploadImage

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 ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.