JSON을 PHP 배열로 변환
JSON 문서를 붙여넣으면 .php 소스 파일에 맞게 서식이 지정된 PHP 배열 리터럴을 얻을 수 있습니다. 짧은 배열 문법([...]), 올바른 들여쓰기, 정확하게 따옴표로 감싼 문자열, 연관 배열로 변환되는 중첩 객체, 그리고 인덱스를 유지하는 배열이 특징입니다. 테스트에 API 픽스처를 삽입하거나 설정 파일의 초깃값을 채우는 데 유용합니다.
JSON을 PHP로 변환하는 방법
-
1
JSON 붙여넣기
유효한 모든 JSON: 객체, 배열, 깊이 중첩된 구조 포함.
-
2
문법 선택
짧은 `[...]`(PHP 5.4 이상) 또는 긴 `array(...)`(지금은 거의 필요 없음).
-
3
문자열 따옴표 선택
작은따옴표(변수 보간 없음, 아포스트로피는 이스케이프) 또는 큰따옴표(`$` 보간 허용: 데이터에는 대개 부적합).
-
4
배열 복사
`.php` 파일에 붙여넣고 `return`에 할당하거나 `config([...])`로 감싸세요.
예시
입력:
{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }
출력(짧은 문법, 작은따옴표):
[
'app' => [
'name' => 'Hyperion',
'debug' => true,
'hosts' => [
'h1.example.com',
'h2.example.com',
],
],
]
타입 매핑
| JSON | PHP |
|---|---|
| 문자열 | 문자열(작은따옴표) |
| 정수 | int |
| 숫자(소수) | float |
| 불리언 | true / false |
| null | null |
| 배열(JSON) | 인덱스 배열 |
| 객체(JSON) | 연관 배열 |
연관 배열과 인덱스 배열을 언제 사용할까
PHP에는 두 가지 동작을 모두 가진 하나의 배열 타입이 있습니다. 반면 JSON은 객체와 배열을 명확히 구분하므로 매핑은 다음과 같습니다.
{}→ 연관 배열(['key' => value]).[]→ 인덱스 배열([value, value]).
제너레이터는 항상 이 구분을 유지합니다. PHP에서 둘을 섞는 것은 가능하지만 혼란스럽습니다.
PHP 특유의 함정
- 숫자 문자열 키. PHP는 배열에서
"42"를 정수 키42로 변환합니다. JSON에서 숫자 문자열을 키로 사용하면서 문자열로 유지해야 한다면,array_combine을 통한 왕복 변환에서는 보존되지 않습니다. - 큰 정수. JSON은 32비트 빌드에서
PHP_INT_MAX보다 큰 정수를 담을 수 있습니다. 그런 상황이 발생할 수 있으면 제너레이터가 경고합니다. - UTF-8. PHP 문자열은 바이트 시퀀스이며, 제너레이터는 UTF-8을 그대로 출력합니다.
.php파일이 BOM 없는 UTF-8로 저장되었는지 확인하세요.
사용 사례
- 설정 파일. Laravel과 Symfony 모두 PHP 배열 설정을 사용합니다. 벤더 스타일의 JSON 설정을 그대로 가져오는 방식도 잘 동작합니다.
- 테스트 픽스처.
PHPUnit픽스처는 런타임에 로드되는 JSON 파일보다 배열 형태가 더 깔끔합니다. - 시더. Laravel의 데이터베이스 시더는 흔히 JSON 덤프에서 시작해 PHP 배열이 됩니다.
흔한 실수
- PHP 배열을 다시 JSON으로 변환하기.
json_encode는 연관 배열을 객체로, 인덱스 배열을 배열로 취급합니다. 둘을 섞으면(['key' => 'val', 0 => 'x']) 출력이 객체가 됩니다. JSON 형태의 배열은 JSON 형태로 유지하세요. - 아포스트로피가 있는 큰따옴표. 작은따옴표 PHP 문자열은
\'를 이스케이프해야 하고, 큰따옴표 문자열은\\"를 이스케이프해야 하며, 주의하지 않으면 변수가 실수로 보간될 수 있습니다. 데이터에는 작은따옴표를 사용하세요. - 끝의 쉼표 잊기. PHP는 7.3부터 이를 허용하며 diff를 더 깔끔하게 만듭니다. 제너레이터는 기본적으로 추가합니다.
자주 묻는 질문
짧은 문법([...])은 PHP 5.4부터 사용할 수 있으며 모든 현대 코드에서 관용적인 선택입니다. 긴 문법(array(...))은 PHP 5.3 이하에서 실행해야 하는 코드, 즉 사실상 레거시 시스템에서만 필요합니다.
네. Laravel 설정 파일은 파일에서 반환되는 평범한 PHP 배열입니다. 제너레이터 출력을 return 뒤에 붙여넣고 config/에 저장하세요.
작은따옴표 PHP 문자열은 변수나 이스케이프 시퀀스를 보간하지 않습니다(\'와 \\ 제외). 데이터 리터럴에는 이 방식이 더 빠르고 안전합니다. 큰따옴표는 문자열 안에 \n, \t, $variable을 넣고 싶을 때만 의미가 있습니다.
아니요, 배열 리터럴을 출력합니다. 필요에 따라 return, const, 클래스 속성으로 직접 감싸세요. 출력을 작게 유지하면 조합하기 쉬워집니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
이 도구는 다른 언어로도 제공됩니다
- JSON sang mảng PHP [VI]
- JSON para Array PHP [PT]
- JSON a Array de PHP [ES]
- تحويل JSON إلى مصفوفة PHP [AR]
- JSON vers tableau PHP [FR]
- JSONからPHP配列へ [JA]
- JSON ke Array PHP [ID]
- JSON naar PHP-array [NL]
- JSON till PHP-array [SV]
- JSON เป็น PHP Array [TH]
- JSON zu PHP-Array [DE]
- JSON do tablicy PHP [PL]
- JSON to PHP Array [EN]
- JSON in array PHP [IT]
- JSON в массив PHP [RU]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]