/** * Implement json_encode for PHP that does not support it * * @param mixed $elements PHP Object to json encode * @return string Json encoded string */ function json_encode($elements) { $num = count($elements); // determine type if (is_numeric(key($elements))) { // indexed (list) $output = '['; for ($i = 0, $last = $num - 1; isset($elements[$i]); ++$i) { if (is_array($elements[$i])) { $output .= json_encode($elements[$i]); } else { $output .= _val($elements[$i]); } if ($i !== $last) { $output .= ','; } } $output .= ']'; } else { // associative (object) $output = '{'; $last = $num - 1; $i = 0; foreach ($elements as $key => $value) { $output .= '"' . $key . '":'; if (is_array($value)) { $output .= json_encode($value); } else { $output .= _val($value); } if ($i !== $last) { $output .= ','; } ++$i; } $output .= '}'; } // return return $output; }
/** * Implement json_encode for PHP that does not support it * * @param mixed $elements PHP Object to json encode * @return string Json encoded string * @deprecated PHP >= 5.3 supports native json_encode * @see json_encode() */ function dol_json_encode($elements) { dol_syslog('dol_json_encode() is deprecated. Please update your code to use native json_encode().', LOG_WARNING); $num = count($elements); if (is_object($elements)) { $num = 0; foreach ($elements as $key => $value) { $num++; } } //var_dump($num); // determine type if (is_numeric(key($elements)) && key($elements) == 0) { // indexed (list) $keysofelements = array_keys($elements); // Elements array mus have key that does not start with 0 and end with num-1, so we will use this later. $output = '['; for ($i = 0, $last = $num - 1; $i < $num; $i++) { if (!isset($elements[$keysofelements[$i]])) { continue; } if (is_array($elements[$keysofelements[$i]]) || is_object($elements[$keysofelements[$i]])) { $output .= json_encode($elements[$keysofelements[$i]]); } else { $output .= _val($elements[$keysofelements[$i]]); } if ($i !== $last) { $output .= ','; } } $output .= ']'; } else { // associative (object) $output = '{'; $last = $num - 1; $i = 0; $tmpelements = array(); if (is_array($elements)) { $tmpelements = $elements; } if (is_object($elements)) { $tmpelements = get_object_vars($elements); } foreach ($tmpelements as $key => $value) { $output .= '"' . $key . '":'; if (is_array($value)) { $output .= json_encode($value); } else { $output .= _val($value); } if ($i !== $last) { $output .= ','; } ++$i; } $output .= '}'; } // return return $output; }