<?php
if (!function_exists('json_encode')) {
function json_encode($it) {
if (!is_array($it) && !is_object($it)) {
return _js_enc_value($it);
}
$assoc = false;
$i = 0;
foreach ($it as $k => $v) {
if ($k !== $i) {
$assoc = true;
break;
}
$i++;
}
if (!isset($k)) {
$assoc = true;
}
$data = array();
foreach ($it as $k => $v) {
$k = '"'. addcslashes($k, '"\\') . '"';
$v = _js_enc_value($v);
$data[] = $assoc ? $k . ':' . $v : $v;
}
if ($assoc) {
$spl = '{';
$spr = '}';
} else {
$spl = '[';
$spr = ']';
}
return $spl . implode(',', $data) . $spr;
}
function _js_enc_value($value) {
switch (true) {
case is_array($value):
case is_object($value):
return json_encode($value);
case is_bool($value):
return $value ? 'true' : 'false';
case $value === null:
case is_resource($value):
return 'null';
case is_string($value):
return '"' . _js_uc_esc($value) . '"';
default:
return $value;
}
}
function _js_uc_esc($value) {
$pattern = "/\r|(\n)|((?:[^\x09\x0A\x0D\x20-\x7E]{3})+)/";
return preg_replace_callback($pattern, '_js_uc_esc_cb', $value);
}
function _js_uc_esc_cb($matches) {
switch (true) {
case isset($matches[2]):
$char = mb_convert_encoding($matches[2], 'UTF-16', 'UTF-8');
$str = '';
$len = strlen($char);
for ($i = 0; $i < $len; $i += 2) {
$str .= sprintf('\\u%02x%02x', ord($char[$i]), ord($char[$i + 1]));
}
return $str;
case isset($matches[1]):
return '\\n';
default:
return '\\r';
}
}
}
$var = array(
0 => array('text', 1, 1.1, true, false, null, new stdClass, (object)array(0 => 1)),
2 => array('a' => 'hoge', 'b' => 'foo'),
);
$f = json_encode($var);
var_dump(json_decode($f));
- Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- object(stdClass)#5 (2) {
["0"]=>
array(8) {
[0]=>
string(4) "text"
[1]=>
int(1)
[2]=>
float(1.1)
[3]=>
bool(true)
[4]=>
bool(false)
[5]=>
NULL
[6]=>
object(stdClass)#3 (0) {
}
[7]=>
object(stdClass)#4 (1) {
["0"]=>
int(1)
}
}
["2"]=>
object(stdClass)#6 (2) {
["a"]=>
string(4) "hoge"
["b"]=>
string(3) "foo"
}
}
- Output for 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28
- object(stdClass)#3 (2) {
["0"]=>
array(8) {
[0]=>
string(4) "text"
[1]=>
int(1)
[2]=>
float(1.1)
[3]=>
bool(true)
[4]=>
bool(false)
[5]=>
NULL
[6]=>
object(stdClass)#4 (0) {
}
[7]=>
object(stdClass)#5 (1) {
["0"]=>
int(1)
}
}
["2"]=>
object(stdClass)#6 (2) {
["a"]=>
string(4) "hoge"
["b"]=>
string(3) "foo"
}
}
- Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6
- Fatal error: Call to undefined function json_decode() in /in/m8Xb3 on line 84
Process exited with code 255. - Output for 4.4.5 - 4.4.9
- Fatal error: Call to undefined function: json_decode() in /in/m8Xb3 on line 84
Process exited with code 255. - Output for 4.3.2 - 4.3.11, 4.4.0 - 4.4.4
- Fatal error: Call to undefined function: json_decode() in /in/m8Xb3 on line 84
Process exited with code 255. - Output for 4.3.0 - 4.3.1
- Fatal error: Call to undefined function: json_decode() in /in/m8Xb3 on line 84
preferences:
231.6 ms | 401 KiB | 366 Q