$value ){ // We first copy each key/value pair into a staging array, // formatting each key and value properly as we go. // Format the key: if( is_numeric($key) ){ $key = "key_$key"; } $key = '"'.addslashes($key).'"'; // Format the value: if( is_array( $value )){ $value = yourls_array_to_json( $value ); } else if( !is_numeric( $value ) || is_string( $value ) ){ $value = '"'.addslashes($value).'"'; } // Add to staging array: $construct[] = "$key: $value"; } // Then we collapse the staging array into the JSON form: $result = "{ " . implode( ", ", $construct ) . " }"; } else { // If the array is a vector (not associative): $construct = array(); foreach( $array as $value ){ // Format the value: if( is_array( $value )){ $value = yourls_array_to_json( $value ); } else if( !is_numeric( $value ) || is_string( $value ) ){ $value = '"'.addslashes($value).'"'; } // Add to staging array: $construct[] = $value; } // Then we collapse the staging array into the JSON form: $result = "[ " . implode( ", ", $construct ) . " ]"; } return $result; } // Compat http_build_query for PHP4 if (!function_exists('http_build_query')) { function http_build_query($data, $prefix=null, $sep=null) { return yourls_http_build_query($data, $prefix, $sep); } } // from php.net (modified by Mark Jaquith to behave like the native PHP5 function) function yourls_http_build_query($data, $prefix=null, $sep=null, $key='', $urlencode=true) { $ret = array(); foreach ( (array) $data as $k => $v ) { if ( $urlencode) $k = urlencode($k); if ( is_int($k) && $prefix != null ) $k = $prefix.$k; if ( !empty($key) ) $k = $key . '%5B' . $k . '%5D'; if ( $v === NULL ) continue; elseif ( $v === FALSE ) $v = '0'; if ( is_array($v) || is_object($v) ) array_push($ret,yourls_http_build_query($v, '', $sep, $k, $urlencode)); elseif ( $urlencode ) array_push($ret, $k.'='.urlencode($v)); else array_push($ret, $k.'='.$v); } if ( NULL === $sep ) $sep = ini_get('arg_separator.output'); return implode($sep, $ret); } // htmlspecialchars_decode for PHP < 5.1 if ( !function_exists('htmlspecialchars_decode') ) { function htmlspecialchars_decode($text) { return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); } } // BC Math functions (assuming if one doesn't exist, none does) if ( !function_exists( 'bcdiv' )) { function bcdiv( $dividend, $divisor ) { $quotient = floor( $dividend/$divisor ); return $quotient; } function bcmod( $dividend, $modulo ) { $remainder = $dividend%$modulo; return $remainder; } function bcmul( $left, $right ) { return $left * $right; } function bcadd( $left, $right ) { return $left + $right; } function bcpow( $base, $power ) { return pow( $base, $power ); } }