
本文介绍如何将一个关联数组快速转换为标准 json 格式,其中键名(keys)提取为 labels 数组,对应值(values)转为整型后存入 points 数组,并输出合法 json 字符串。
本文介绍如何将一个关联数组快速转换为标准 json 格式,其中键名(keys)提取为 labels 数组,对应值(values)转为整型后存入 points 数组,并输出合法 json 字符串。
在 PHP 开发中,常需将原始关联数组重构为前端图表库(如 Chart.js)可直接消费的结构。例如,给定如下数组:
$data = [
"agre" => "0",
"extr" => "0",
"inte" => "100",
];目标是生成形如 {"labels":["agre","extr","inte"],"points":[0,0,100]} 的 JSON 字符串。
实现的核心在于两个内置函数的组合使用:
-
array_keys($data):提取所有键名,返回索引数组['agre', 'extr', 'inte']; -
array_values($data):提取所有值,返回['0', '0', '100'];再通过array_map('intval', ...)将字符串数值统一转为整型,确保points中无引号,符合 JSON 数值规范。
完整示例代码如下:
立即学习“PHP免费学习笔记(深入)”;
$data = [
"agre" => "0",
"extr" => "0",
"inte" => "100",
];
$result = [
'labels' => array_keys($data),
'points' => array_map('intval', array_values($data))
];
echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);✅ 输出结果(严格 JSON 格式):
{"labels":["agre","extr","inte"],"points":[0,0,100]}⚠️ 注意事项:
- 若原始值可能为
null、空字符串或非数字字符串,建议改用array_map(fn($v) => (int)$v, array_values($data))或添加类型校验逻辑,避免静默转为0; - 使用
JSON_NUMERIC_CHECK可辅助识别纯数字字符串并自动转为数字(但不处理带单位或小数点的字符串),而intval更可控、语义明确; - 如需保持浮点精度(如
"99.5"→99.5),应改用(float)$v或floatval()替代intval()。
该方法简洁高效,无需循环,适用于中小型数据集,是 PHP 数组结构化输出的典型实践。



















