note 109500 added to function.json-encode

From: Date: Mon, 23 Jul 2012 02:35:50 +0000
Subject: note 109500 added to function.json-encode
Groups: php.notes 
Request: Send a blank email to php-notes+get-189360@lists.php.net to get a copy of this message
Craig posted above with an implementation of json_encode for those with PHP < 5.2, but there are a few corner cases it doesn't follow JSON and caused problems. Thought I would share the improved version: <?php if (!function_exists('json_encode')) { function json_encode($data) { switch ($type = gettype($data)) { case 'NULL': return 'null'; case 'boolean': return ($data ? 'true' : 'false'); case 'integer': case 'double': case 'float': return $data; case 'string': return '"' . str_replace("/", "\\/", str_replace("\\'", "'", addslashes($data) )) . '"'; case 'object': $data = get_object_vars($data); case 'array': $output_index_count = 0; $output_indexed = array(); $output_associative = array(); foreach ($data as $key => $value) { $output_indexed[] = json_encode($value); $output_associative[] = json_encode(strval($key)) . ':' . json_encode($value); if ($output_index_count !== NULL && $output_index_count++ !== $key) { $output_index_count = NULL; } } if ($output_index_count !== NULL) { return '[' . implode(',', $output_indexed) . ']'; } else { return '{' . implode(',', $output_associative) . '}'; } default: return ''; // Not supported } } } ?> ---- Server IP: 69.147.83.197 Probable Submitter: 66.27.98.241 ---- Manual Page -- http://www.php.net/manual/en/function.json-encode.php Edit -- https://master.php.net/note/edit/109500 Del: integrated -- https://master.php.net/note/delete/109500/integrated Del: useless -- https://master.php.net/note/delete/109500/useless Del: bad code -- https://master.php.net/note/delete/109500/bad+code Del: spam -- https://master.php.net/note/delete/109500/spam Del: non-english -- https://master.php.net/note/delete/109500/non-english Del: in docs -- https://master.php.net/note/delete/109500/in+docs Del: other reasons-- https://master.php.net/note/delete/109500 Reject -- https://master.php.net/note/reject/109500 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#189360) next »