Scalar Types (์Šค์นผ๋ผ ํƒ€์ž…)

String

๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…์œผ๋กœ, ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

// ๋ฌธ์ž์—ด ์ƒ์„ฑ
$str = "Hello";
$str2 = 'World';
$str3 = "Hello {$str2}"; // ๋ณ€์ˆ˜ ๋ณด๊ฐ„
 
// ์ฃผ์š” ๋ฉ”์„œ๋“œ
strlen($str);          // ๊ธธ์ด
strtoupper($str);      // ๋Œ€๋ฌธ์ž
strtolower($str);      // ์†Œ๋ฌธ์ž
substr($str, 0, 3);    // ๋ถ€๋ถ„ ๋ฌธ์ž์—ด
explode(' ', $str);    // ๋ฌธ์ž์—ด ๋ถ„ํ• 
trim($str);           // ๊ณต๋ฐฑ ์ œ๊ฑฐ
str_contains($str, 'el'); // ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

Integer & Float

์ •์ˆ˜์™€ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

// ์ •์ˆ˜
$int = 42;
$hex = 0x2A;      // 16์ง„์ˆ˜
$oct = 0o52;      // 8์ง„์ˆ˜
$bin = 0b101010;  // 2์ง„์ˆ˜
 
// ์‹ค์ˆ˜
$float = 42.123;
$scientific = 1.2e3;
 
// ์ฃผ์š” ํ•จ์ˆ˜
is_int($int);           // ์ •์ˆ˜ ์—ฌ๋ถ€
is_float($float);       // ์‹ค์ˆ˜ ์—ฌ๋ถ€
round($float, 2);       // ๋ฐ˜์˜ฌ๋ฆผ
ceil($float);          // ์˜ฌ๋ฆผ
floor($float);         // ๋‚ด๋ฆผ

Boolean

true ๋˜๋Š” false ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

$bool = true;
$bool2 = false;
 
// ๋ถˆ๋ฆฌ์–ธ ๋ณ€ํ™˜
$result = (bool) "";     // false
$result2 = (bool) "0";   // false
$result3 = (bool) [];    // false
$result4 = (bool) "1";   // true

Compound Types (๋ณตํ•ฉ ํƒ€์ž…)

Array

PHP์—์„œ ๊ฐ€์žฅ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋กœ, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋งต์ด๋‹ค.

// ๋ฐฐ์—ด ์ƒ์„ฑ
$arr = [1, 2, 3];
$assoc = ['name' => 'John', 'age' => 30];
 
// ๋ฐฐ์—ด ์กฐ์ž‘
array_push($arr, 4);         // ๋์— ์ถ”๊ฐ€
array_pop($arr);            // ๋์—์„œ ์ œ๊ฑฐ
array_unshift($arr, 0);     // ์•ž์— ์ถ”๊ฐ€
array_shift($arr);          // ์•ž์—์„œ ์ œ๊ฑฐ
 
// ๋ฐฐ์—ด ๊ฒ€์ƒ‰
in_array(2, $arr);          // ๊ฐ’ ์กด์žฌ ์—ฌ๋ถ€
array_key_exists('name', $assoc); // ํ‚ค ์กด์žฌ ์—ฌ๋ถ€
array_search(2, $arr);      // ๊ฐ’์˜ ํ‚ค ์ฐพ๊ธฐ
 
// ๋ฐฐ์—ด ๋ณ€ํ™˜
$mapped = array_map(fn($x) => $x * 2, $arr);
$filtered = array_filter($arr, fn($x) => $x > 1);
$reduced = array_reduce($arr, fn($carry, $item) => $carry + $item, 0);
 
// ๋ฐฐ์—ด ์ •๋ ฌ
sort($arr);                // ๊ฐ’์œผ๋กœ ์ •๋ ฌ
asort($assoc);            // ๊ฐ’์œผ๋กœ ์ •๋ ฌ (์—ฐ๊ด€๋ฐฐ์—ด)
ksort($assoc);            // ํ‚ค๋กœ ์ •๋ ฌ
rsort($arr);              // ์—ญ์ˆœ ์ •๋ ฌ
 
// ์œ ์šฉํ•œ ๋ฐฐ์—ด ํŒ
array_chunk($arr, 2);     // ๋ฐฐ์—ด ๋ถ„ํ• 
array_merge($arr1, $arr2); // ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ
array_diff($arr1, $arr2);  // ์ฐจ์ง‘ํ•ฉ
array_intersect($arr1, $arr2); // ๊ต์ง‘ํ•ฉ
array_unique($arr);       // ์ค‘๋ณต ์ œ๊ฑฐ

WeakMap

์ฐธ์กฐ๊ฐ€ ํ•ด์ œ๋˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํŒ…๋˜๋Š” ๊ฐ์ฒด ๋งต์ด๋‹ค.

$map = new WeakMap();
$obj = new stdClass();
 
$map[$obj] = 'data';
// $obj = null; // ์ฐธ์กฐ ํ•ด์ œ์‹œ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ

ํŠน์ˆ˜ ํƒ€์ž…

Null

๋ช…์‹œ์ ์œผ๋กœ ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

$var = null;
is_null($var);        // null ์ฒดํฌ
$value = $var ?? 'default'; // null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž

Resource

์™ธ๋ถ€ ์ž์›์˜ ์ฐธ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

$file = fopen('file.txt', 'r');
is_resource($file);    // resource ์ฒดํฌ
fclose($file);        // ์ž์› ํ•ด์ œ

ํƒ€์ž… ๋ณ€ํ™˜

// ๋ช…์‹œ์  ๋ณ€ํ™˜
$int = (int) "123";
$str = (string) 123;
$array = (array) $object;
 
// ํƒ€์ž… ๊ฒ€์‚ฌ
$type = gettype($variable);
is_string($variable);
is_array($variable);
is_object($variable);

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋น„๊ต

ํƒ€์ž…ํŠน์ง•์ฃผ์š” ์šฉ๋„
Stringํ…์ŠคํŠธ ์ฒ˜๋ฆฌ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
Integer์ •์ˆ˜ ์—ฐ์‚ฐ์ˆ˜์น˜ ๊ณ„์‚ฐ
Float๋ถ€๋™์†Œ์ˆ˜์  ์—ฐ์‚ฐ์‹ค์ˆ˜ ๊ณ„์‚ฐ
Array์ˆœ์ฐจ/์—ฐ๊ด€ ๋ฐฐ์—ด๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜
WeakMap์•ฝํ•œ ์ฐธ์กฐ ๊ฐ์ฒด ๋งต๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ์บ์‹ฑ
Resource์™ธ๋ถ€ ์ž์› ์ฐธ์กฐํŒŒ์ผ, DB ์—ฐ๊ฒฐ ๋“ฑ
Null๊ฐ’ ์—†์Œ ํ‘œํ˜„์ดˆ๊ธฐํ™”, ์กฐ๊ฑด ์ฒ˜๋ฆฌ