如何在PHP json_encode中实现JS JSON.stringify的replacer与space效果
解决方法
PHP的json_encode函数参数规则和JS的JSON.stringify不同,你之前的写法传参错误无法触发格式化效果,按下面的方法调整即可:
1. 基础格式化输出
JSON_PRETTY_PRINT是PHP 5.4.0及以上版本内置的选项常量,传入后即可生成带换行缩进的易读JSON,默认缩进为4空格:
echo json_encode($array, JSON_PRETTY_PRINT);
2. 调整缩进为2空格(和JS示例效果一致)
如果你需要和JS示例一样的2空格缩进,可以对输出结果做一次简单的正则替换:
$json = json_encode($array, JSON_PRETTY_PRINT); // 将默认4空格缩进替换为2空格 $jsonWith2Indent = preg_replace('/^ /m', ' ', $json); echo $jsonWith2Indent;
3. 实现类似JS的replacer字段过滤效果
PHP的json_encode没有内置replacer参数,需要你在编码前自行处理原数组,实现字段过滤逻辑:
// 示例:仅保留每个元素的test字段 $processed = array_map(function($item) { return [ 'test' => $item['test'] ]; }, $array); // 输出格式化后的结果 echo json_encode($processed, JSON_PRETTY_PRINT);
内容的提问来源于stack exchange,提问作者user14849955
相关产品推荐
相关产品推荐

