当前位置: 首页> 最新文章列表> 利用 array_fill_keys 构造 JSON 模板数组

利用 array_fill_keys 构造 JSON 模板数组

M66 2025-06-06

在日常的 PHP 开发中,我们经常需要构造一些结构固定的 JSON 数据,尤其是在处理 API 返回数据或配置模板时。如果你曾经为手动填充每个键而烦恼,array_fill_keys 函数将成为你的好帮手。

一、array_fill_keys 是什么?

array_fill_keys 是 PHP 提供的一个内置函数,它的作用是:使用指定的键名数组和一个默认的值,快速生成一个完整的关联数组

语法如下:

array_fill_keys(array $keys, mixed $value): array
  • $keys:需要作为键的数组。

  • $value:赋给所有键的初始值。

这个函数非常适合用在模板初始化、占位数据构造等场景中。

二、应用场景:构造 JSON 模板数组

设想这样一个场景:你需要返回一个标准化的 JSON 响应,其中包含字段 idnamestatusurl,而这些字段在初始化时都需要有默认值(比如 null、空字符串等)。

传统写法可能是这样的:

$template = [
    'id' => null,
    'name' => null,
    'status' => null,
    'url' => null
];

当字段多了之后,这种方式就显得重复而繁琐。

使用 array_fill_keys,我们可以这样写:

$fields = ['id', 'name', 'status', 'url'];
$template = array_fill_keys($fields, null);

这样就快速得到了一个所有值为 null 的模板数组,效率与可读性都大大提升。

三、结合 JSON 使用

假设我们需要输出一组这样的数据模板,并将其转为 JSON 字符串返回给前端:

$fields = ['id', 'name', 'status', 'url'];
$template = array_fill_keys($fields, null);

// 这里我们为演示,填充一些值
$template['id'] = 101;
$template['name'] = '测试项目';
$template['status'] = 'active';
$template['url'] = 'https://m66.net/api/project/101';

echo json_encode($template, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

输出结果为:

{
    "id": 101,
    "name": "测试项目",
    "status": "active",
    "url": "https://m66.net/api/project/101"
}

这样一来,整个 JSON 结构的模板就能以非常简洁的方式构建出来,并能根据需要动态替换字段值。

四、进阶用法:批量构造多个模板项

如果我们需要一次性构造多个数据项,比如用于模拟分页数据,可以结合循环来生成:

$fields = ['id', 'name', 'status', 'url'];
$list = [];

for ($i = 1; $i <= 5; $i++) {
    $item = array_fill_keys($fields, null);
    $item['id'] = $i;
    $item['name'] = '项目 ' . $i;
    $item['status'] = 'active';
    $item['url'] = "https://m66.net/api/project/{$i}";

    $list[] = $item;
}

echo json_encode($list, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

输出将会是一个包含 5 个条目的 JSON 数组,每一项结构一致,非常适合作为模拟数据或前端接口输出。

总结

array_fill_keys 是一个简单却非常实用的函数,尤其适合构造统一结构的模板数组。无论是单个对象还是数组列表,配合 JSON 使用都可以显著提升代码的可读性和可维护性。

当你下次需要初始化结构化数据时,不妨考虑用上这个小巧的工具函数,让 PHP 开发更轻松!