Example #1
0
 /**
  * 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;
 }
Example #2
0
/**
 * 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;
}