从 JSON 到 PHP 数组

粘贴 JSON 文档即可生成符合.php源文件格式要求的PHP数组字面表达式,包含简短的数组语法(如[...])、规范的缩进格式、正确引用的字符串、嵌套对象转换为关联数组以及数组保持索引结构。该功能适用于在测试中嵌入API参数或初始化配置文件。

如何将 JSON 转换为PHP

  1. 1

    粘贴 JSON

    所有有效的 JSON(对象、数组及深度嵌套结构)均适用。

  2. 2

    句法解析

    短型`[...]`(适用于PHP 5.4及以上版本)或长型`array(...)`(现已罕见使用)。

  3. 3

    选取字符串引号

    单引号(不进行插值处理,使用转义撇号)或双引号(允许`$`插值,通常并非数据处理所需)。

  4. 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
数值(十进制) 浮点数
布尔值 true / false
空值 null
数组(JSON) 带索引的数组
对象(JSON) 关联数组

何时使用关联数组与索引数组

PHP 中只有一种数组类型,但同时具备这两种行为。JSON 能清晰区分对象与数组,因此对应关系如下:

  • {} → 关联数组(['key' => value])。
  • [] → 已索引([value, value])。

生成器始终保留这种区分;在PHP中混合使用这两种方式虽合法,但容易引起混淆。

PHP特有的陷阱

  • **数值字符串键。**PHP会将"42"转换为数组中的整数键42。若您的 JSON 使用数值字符串作为键且需要以字符串形式呈现,则array_combine的双向转换操作无法保留原始数值。
  • 大整数。 在32位架构中, JSON 可存储大于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时才需要使用。

不,它会输出一个数组字面值。可根据需要使用 returnconst 或类属性自行包装。保持输出内容简洁可组合。

相关工具

此工具还提供其他语言版本