ToolConvoyToolConvoyv2.6
DEV

JSON 转 PHP 数组 — 将 JSON 转换为 PHP 数组语法

将 JSON 转换为带规范缩进的 PHP 数组语法。关联数组与索引数组、PSR-12 格式化 —— 全部在浏览器中完成,无需上传。

● 本地运行 · 在您的标签页中生成页面加载以来工具发出的网络请求:0 次

JSON to PHP Array

Convert JSON to PHP array syntax. Generates clean PHP array code with proper indentation. Works entirely in your browser.

PHP 数组字面量语法是 Web 开发里被复制粘贴最多的语法之一。JSON 本质上是 JavaScript 对象字面量语法的受限子集,而 PHP 数组语法则是服务端世界中最接近它的「近亲」。把 JSON 转成 PHP 数组,与其说是数据转换,不如说是语法翻译:结构保持不变,类型映射干净(JSON string ↔ PHP string,JSON number ↔ PHP int 或 float,JSON boolean ↔ PHP bool,JSON null ↔ PHP null),唯一需要真正做决定的,是用短数组语法([...])还是老式的 array(...)

大多数转换器都会栽在 PHP 关联/索引混用这个不对称上。PHP 只有一种数组类型,同时充当列表(索引式,数字键)和字典(关联式,字符串键)。JSON 则有两种不同类型:array(有序,数字索引)和 object(无序,字符串键)。转换器必须做出判断:一个键全是数字的 JSON 对象,到底该转成关联数组(因为这些键在 JSON 里其实是字符串)还是索引数组(因为这些键是从 0 开始的连续数字)?本生成器在两种情形下都能输出,并在文件顶部加一行注释,说明对任何存在歧义的键模式所做的判断。

生成 PHP 数组之后,最常见的下一步是把它放进 Laravel 或 Symfony 配置文件、PHPUnit 的测试 fixture,或者某个返回测试用例数组的 data provider 方法。如果目的地是 WordPress 主题或插件,生成的数组可以直接作为 register_post_typewp_register_script 或 WordPress 几十个接收关联数组的注册函数的 options 数组使用。PHP 数组是 PHP 生态的通用配置语言 —— 生成结果与所有这些场景直接兼容。

广告

使用方法

  1. 粘贴你的 JSON

    拖入 JSON 对象或粘贴 JSON 字符串。转换器会自动检测嵌套深度,并按相同结构输出带缩进的 PHP 数组。

  2. 选择数组语法风格

    在短数组语法(`[...]`,符合 PSR-12 标准)和老式的 `array(...)` 形式之间切换,以便兼容遗留代码库。短语法为默认。

  3. 复制或下载 .php 代码片段

    把 PHP 数组复制到剪贴板,或下载为 .php 文件。输出可直接粘贴进任意 PHP 配置、路由或测试 fixture,不需要额外函数。

常见问题

它如何区分关联数组和索引数组?

JSON 对象转成 PHP 关联数组,使用字符串键;JSON 数组(数字键 0、1、2...)转成索引数组,使用隐式数字键。如果某个 JSON 对象的所有键都是数字,它仍然会被当作关联数组处理 —— 因为键在 JSON 规范里是字符串。需要索引数组时请手动转换。

会保留 JSON 的 null 值吗?

会。JSON 的 `null` 会被映射为 PHP 的 `null`。空 JSON 对象映射为 `[]`。空 JSON 字符串映射为 `''`。经过 `json_encode` 来回一次,对标准 JSON 类型是无损的。

能处理深度嵌套的 JSON 文件吗?

可以。每层缩进增加 4 个空格(PSR-12 标准),除了浏览器内存以外没有深度限制。深度嵌套的 JSON 会产生深度缩进的 PHP,这是预期行为。

输出能直接用在 Laravel 配置文件里吗?

可以。Laravel 配置文件返回的就是一个 PHP 数组。把生成的数组粘贴进去作为配置文件的返回值,文件顶部加上 `<?php return ...;` 即可。缩进风格与 Laravel 自带的配置保持一致。

遇到带重复键的 JSON 怎么处理?

JSON 规范本身禁止重复键,但部分 API 仍然会输出。转换器保留每个键的最后一次出现的值 —— 与 PHP 在关联数组模式下 `json_decode` 的行为一致。如果怀疑存在重复键,请人工复核输出。

限制说明

  • 没有 TrailingComma 选项输出在每个元素后都带尾随逗号(PHP 7.3+ 风格)。如果目标环境是 PHP 7.2 及更早版本,请手动去掉尾随逗号。
  • 字符串键一律使用单引号字符串键始终输出为 PHP 单引号字符串。如果某个键里包含单引号,不会做转义。PSR-12 推荐非插值字符串使用单引号键;键中的多字节字符按原样输出。
  • 不做字符串插值输出是静态的数组字面量。如果某个值需要在运行时计算,请在生成后手动把字面量替换为函数调用或变量引用。

平台说明

macOS
PHPStorm、装了 Intelephense 扩展的 VS Code,以及 Sublime Text 都能接受生成的数组。对于把一条示例 API 响应转换成测试 fixture 这种一次性需求,浏览器工具最合适。
Windows
XAMPP、WAMP 和 Laragon 环境处理生成的数组都一样。把聊天或邮件里收到的 JSON 片段转成 PHP 配置数组时,浏览器工具是正确选择。
Linux
命令行场景下,`php -r 'var_export(json_decode(file_get_contents("f.json"), true));'` 是等价做法。没有 PHP 运行环境的临时性转换,浏览器工具更顺手。
Web
完全在客户端运行。支持离线使用。转换耗时在毫秒级。
广告
广告