php格式化json函数示例代码
这篇文章主要介绍了php格式化json函数,结合实例形式分析了php使用自定义函数实现json格式化的方法,涉及php数组转json、流程控制及字符串操作等技巧,需要的朋友可以参考下。
本文讲述了php格式化json函数的示例代码,分享给大家供大家参考,具体如下:
- <?php
- $arr = array("ret"=>0,"data"=>array('a' => 1, 'b' => '2', 'c' => 3, 'd' => 4, 'e' => 5));
- $json = json_encode($arr);
- /**
- * Formats a JSON string for pretty printing
- *
- * @param string $json The JSON to make pretty
- * @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks
- * @return string The prettified output
- */
- function _format_json($json, $html = false) {
- $tabcount = 0;
- $result = '';
- $inquote = false;
- $ignorenext = false;
- if ($html) {
- $tab = " ";
- $newline = "<br/>";
- } else {
- $tab = "\t";
- $newline = "\n";
- }
- for($i = 0; $i < strlen($json); $i++) {
- $char = $json[$i];
- if ($ignorenext) {
- $result .= $char;
- $ignorenext = false;
- } else {
- switch($char) {
- case '{':
- $tabcount++;
- $result .= $char . $newline . str_repeat($tab, $tabcount);
- break;
- case '}':
- $tabcount--;
- $result = trim($result) . $newline . str_repeat($tab, $tabcount) . $char;
- break;
- case ',':
- $result .= $char . $newline . str_repeat($tab, $tabcount);
- break;
- case '"':
- $inquote = !$inquote;
- $result .= $char;
- break;
- case '\\':
- if ($inquote) $ignorenext = true;
- $result .= $char;
- break;
- default:
- $result .= $char;
- }
- }
- }
- return $result;
- }
- echo _format_json($json);
- /*
- {
- "ret": 0,
- "data": {
- "a": 1,
- "b": 2,
- "c": 3,
- "d": 4,
- "e": 5
- }
- }
- **/
- ?>