0Pricing
PHP Academy · 강의

형 저글링과 형 변환

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.7

settype() 함수

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. PHP에서 변수 선언하기
  2. PHP 데이터 형 개요
  3. Echo와 Print 출력
  4. 형 저글링과 형 변환
← PHP Academy(으)로 돌아가기