JSON을 PHP 배열로 변환
JSON 문서를 붙여넣으면 .php 소스 파일에 맞게 서식이 지정된 PHP 배열 리터럴을 얻을 수 있습니다. 짧은 배열 문법([...]), 올바른 들여쓰기, 정확하게 따옴표로 감싼 문자열, 연관 배열로 변환되는 중첩 객체, 그리고 인덱스를 유지하는 배열이 특징입니다. 테스트에 API 픽스처를 삽입하거나 설정 파일의 초깃값을 채우는 데 유용합니다.
JSON을 PHP로 변환하는 방법
-
1
JSON 붙여넣기
유효한 모든 JSON: 객체, 배열, 깊이 중첩된 구조 포함.
-
2
문법 선택
짧은 `[...]`(PHP 5.4 이상) 또는 긴 `array(...)`(지금은 거의 필요 없음).
-
3
문자열 따옴표 선택
작은따옴표(변수 보간 없음, 아포스트로피는 이스케이프) 또는 큰따옴표(`$` 보간 허용: 데이터에는 대개 부적합).
-
4
배열 복사
`.php` 파일에 붙여넣고 `return`에 할당하거나 `config([...])`로 감싸세요.
예시
입력:
{ "app": { "name": "MyApp", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }
출력(짧은 문법, 작은따옴표):
[
'app' => [
'name' => 'MyApp',
'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, 클래스 속성으로 직접 감싸세요. 출력을 작게 유지하면 조합하기 쉬워집니다.
관련 도구
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
Webpack 설정 생성기
순수 JavaScript, React, Vue용 webpack 5 webpack.config.js를 만드세요. TypeScript, Babel, CSS 또는 Sass, 이미지, HtmlWebpackPlugin, 개발 서버, npm install 명령까지 함께 제공합니다.
텍스트 파일 인코딩 변환기
깨진 문자를 고치기 위해 텍스트를 UTF-8, UTF-16, Latin-1, Windows-1252 등 여러 인코딩 사이에서 변환하세요.
XML 포매터
일관된 들여쓰기로 XML 문서를 정렬 출력하고, 정확한 줄 번호로 적격성 오류를 잡아냅니다.
HEX → ASCII 변환기
16진 바이트 시퀀스를 ASCII 텍스트로 변환합니다. 프로토콜 디버깅, 리버스 엔지니어링, CTF 챌린지에 좋습니다.
Protocol Buffers 디코더
hex, Base64, Base64URL, 텍스트 또는 파일의 Protobuf 와이어 형식 바이트를 브라우저에서 디코딩하고 정확한 필드 후보를 확인한 뒤 비공개 보고서로 내보냅니다.
이 도구는 다른 언어로도 제공됩니다
- JSON do tablicy PHP [PL]
- JSON ke Array PHP [ID]
- JSONからPHP配列へ [JA]
- JSON vers tableau PHP [FR]
- JSON naar PHP-array [NL]
- JSON sang mảng PHP [VI]
- JSON เป็น PHP Array [TH]
- تحويل JSON إلى مصفوفة PHP [AR]
- JSON zu PHP-Array [DE]
- JSON a Array de PHP [ES]
- JSON till PHP-array [SV]
- JSON para Array PHP [PT]
- JSON to PHP Array [EN]
- JSON in array PHP [IT]
- JSON в массив PHP [RU]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]