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はPHP 7.3以降で末尾のカンマを許可しており、差分がきれいになります。ジェネレーターはデフォルトで付加します。
よくある質問
短い構文([...])はPHP 5.4以降で利用でき、現代のあらゆるコードで慣用的な選択肢です。長い構文(array(...))は、PHP 5.3以前で動作させる必要があるコード、つまり基本的にはレガシーシステムでのみ必要です。
はい。Laravelの設定ファイルは、ファイルから返される単純なPHP配列です。ジェネレーターの出力をreturnの後に貼り付け、config/に保存してください。
シングルクォートのPHP文字列は、変数やエスケープシーケンスを展開しません(\'と\\は例外)。データリテラルではこのほうが高速で安全です。ダブルクォートは、文字列内に\n、\t、$variableを入れたい場合にのみ意味を持ちます。
いいえ、出力するのは配列リテラルです。必要に応じてreturn、const、クラスのプロパティなどでご自身で囲んでください。出力を小さく保つことで組み合わせやすくなります。
関連ツール
Webpack設定ジェネレーター
短いフォームからwebpack 5のwebpack.config.jsを生成します。entry・出力フォルダー・モードを設定し、TypeScript、Babel、CSSローダー、HtmlWebpackPlugin、開発サーバーを切り替えるだけです。
CMYK から RGB への変換
標準的な計算式で CMYK の割合をおおよその RGB 値と Hex 値に変換し、画面用にすばやく確認できます。
.gitignore ジェネレーター
Laravel、Node.js、Python、Rails のプロジェクト用除外ルールを組み合わせます。結果をコピーするか、.gitignore 入りの ZIP をダウンロードできます。個人用ルールは別に表示します。
16進数から10進数への変換ツール
16進数を10進数(10進法)に変換します。メモリアドレス、エラーコード、RGBチャンネル、任意精度の整数に対応します。
Dockerfileジェネレーター
5つのアプリ構成に合うDockerfileと.dockerignoreを作成。実際の起動対象、作業ディレクトリ、内部ポートを入力し、両方のファイルを確認できます。
Markdownリンク生成ツール
URLとアンカーテキストからMarkdownリンクの記法を生成します。タイトルのツールチップや、長い文書を読みやすく整える参照形式のリンクにも対応しています。
このツールは他の言語でも利用できます
- JSON vers tableau PHP [FR]
- JSON till PHP-array [SV]
- JSON do tablicy PHP [PL]
- JSON a Array de PHP [ES]
- JSON sang mảng PHP [VI]
- JSON naar PHP-array [NL]
- JSON para Array PHP [PT]
- JSON เป็น PHP Array [TH]
- JSON ke Array PHP [ID]
- JSON을 PHP 배열로 변환 [KO]
- تحويل JSON إلى مصفوفة PHP [AR]
- JSON zu PHP-Array [DE]
- JSON to PHP Array [EN]
- JSON in array PHP [IT]
- JSON в массив PHP [RU]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]