형 저글링과 형 변환
PHP가 형 사이를 자동으로 변환하는 방식과 수동으로 형 변환하는 방법을 이해합니다.
형 저글링과 형 변환은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
타입 저글링이란 무엇인가요?
타입 저글링은 연산자나 함수에서 다른 타입을 요구할 때 PHP가 값의 타입을 자동으로 변환하는 것을 의미합니다.
편리한 기능이지만 규칙을 이해하지 못하면 미묘한 오류가 발생할 수 있습니다.
산술 연산에서의 타입 저글링
PHP는 문자열이 산술 연산에 사용되면 숫자로 변환합니다:
<?php
echo '5' + 3; // 8 — string '5' becomes int 5
echo '5.5' + 1.5; // 7 — string '5.5' becomes float
echo '5 cats' + 1; // 6 — leading numeric part used, rest ignored
echo 'cats' + 1; // 1 — non-numeric string becomes 0느슨한 비교 ==
== 연산자는 타입 저글링 후 값을 비교하므로 예상하지 못한 결과가 나올 수 있습니다:
<?php
var_dump(0 == 'a'); // true in PHP 7 (both become 0)
// false in PHP 8 (improved rules!)
var_dump('' == false); // true
var_dump('1' == true); // true
var_dump(null == false); // true엄격한 비교 ===
값과 타입을 모두 비교하려면 항상 ===를 사용하십시오. 타입 저글링이 일어나지 않습니다:
<?php
var_dump(1 === '1'); // false — different types
var_dump(1 === 1); // true
var_dump(null === false); // false
var_dump(0 === false); // false
// Rule of thumb: prefer === unless you explicitly need type coercion명시적 타입 캐스팅
(type)을 앞에 붙여 값을 특정 타입으로 캐스팅하십시오:
<?php
$str = '42.7';
$int = (int) $str; // 42
$float = (float) $str; // 42.7
$bool = (bool) $str; // true
$arr = (array) $str; // ['42.7']
echo $int; // 42
echo $float; // 42.7settype() 함수
settype()은 변수의 타입을 현재 위치에서 변경하고 true/false를 반환합니다:
<?php
$value = '123';
settype($value, 'integer');
var_dump($value); // int(123)
// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex string문자열을 숫자로 변환할 때의 특수 사례
PHP가 문자열을 숫자로 변환할 때 적용되는 주요 규칙은 다음과 같습니다:
- 앞쪽 공백은 무시됩니다:
' 42 '→ 42 - 숫자가 아닌 접두사:
'php8'→ 0(PHP 8 알림) - 과학적 표기법:
'1e3'→ 1000.0 - 16진수 문자열:
'0x1A'는 PHP 7 이상에서 int로 자동 변환되지 않습니다
불리언 캐스팅 규칙
다음 값은 false로 캐스팅되며, 나머지는 모두 true입니다:
<?php
$falsy = [false, 0, 0.0, '', '0', [], null];
foreach ($falsy as $v) {
var_dump((bool) $v); // all bool(false)
}
// Careful:
var_dump((bool) '0'); // false — the STRING '0' is falsy!
var_dump((bool) '00'); // true — only exactly '0' is falsy진수와 함께 사용하는 intval()
intval()은 숫자 문자열을 해석할 때 선택적으로 진수 매개변수를 지정할 수 있습니다:
<?php
echo intval('0b1010', 2); // 10 — binary
echo intval('077', 8); // 63 — octal
echo intval('1F', 16); // 31 — hexadecimal
echo intval('42'); // 42 — decimal (default base 10)PHP 8에서 개선된 타입 저글링
PHP 8에서는 이전 버전의 일관되지 않은 타입 저글링 일부가 수정되었습니다:
0 == 'foo'는 이제false입니다(PHP 7에서는true였습니다)- 숫자와 숫자가 아닌 문자열을 비교할 때 문자열이 더 이상 0으로 강제 변환되지 않습니다
- 이 변경으로 PHP 8은 더 안전해졌지만, 이전 동작에 의존하는 기존 코드가 중단될 수 있습니다
타입 저글링으로 인한 오류 피하기
타입 저글링으로 인한 예기치 않은 결과를 피하기 위한 권장 사항은 다음과 같습니다:
<?php
declare(strict_types=1); // enforce types at function boundaries
// Always use === for comparisons
if ($status === 'active') { /* safe */ }
// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];
// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }빠른 확인
PHP에서 (int) '42abc'는 어떤 값으로 평가됩니까?
복습: 타입 저글링
PHP의 타입 처리에 대해 배운 내용은 다음과 같습니다:
- PHP는 연산 중에 타입을 자동으로 변환합니다. 이것이 타입 저글링입니다
==는 타입 저글링 후 비교하고,===는 엄격하게 비교합니다(타입 + 값)(int),(float),(string),(bool)을 사용해 명시적으로 캐스팅하십시오- 기능적인 대안으로
intval(),floatval(),strval()을 사용하십시오 - PHP 8에서는 일부 타입 저글링 특수 사례가 개선되었습니다
- 코드에서 예기치 않은 결과를 줄이려면
strict_types=1을 활성화하십시오
자주 묻는 질문
“형 저글링과 형 변환” 강의는 무료인가요?
네 — “형 저글링과 형 변환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“형 저글링과 형 변환”에서 뭘 배우나요?
PHP가 형 사이를 자동으로 변환하는 방식과 수동으로 형 변환하는 방법을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“형 저글링과 형 변환” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- PHP에서 변수 선언하기
- PHP 데이터 형 개요
- Echo와 Print 출력
- 형 저글링과 형 변환