note 109500 deleted from function.json-encode by danbrown

From: Date: Mon, 30 Jul 2012 15:57:21 +0000
Subject: note 109500 deleted from function.json-encode by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-189506@lists.php.net to get a copy of this message
Note Submitter: Manoj Mardithaya ---- 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 } } } ?>

« previous php.notes (#189506) next »