Re: PHP arrays and javascript

From: Date: Tue, 30 Nov 2004 05:26:06 +0000
Subject: Re: PHP arrays and javascript
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-203117@lists.php.net to get a copy of this message
Hi!
Would this work the same for multidimensional arrays? Encoding was a special feature needed by me, maybe you don't need it.
Usage: myArray = array(...); echo '<script>'.arrayToJsArray($myArray, 'myArray').'</script>'; Felho --- 8< --- arrayToJsArray.php --- 8< --- <?
    function valueToJsValue($value, $encoding = false)
    {
        if (!is_numeric($value)) {
            $value = str_replace('\\', '\\\\', $value);
            $value = str_replace('"', '\"', $value);
            $value = '"'.$value.'"';
        }
        if ($encoding) {
            switch ($encoding) {
                case 'utf8' :
                    return iconv("ISO-8859-2", "UTF-8", $value);
                    break;
            }
        } else {
            return $value;
        }
    }
    function arrayToJsArray( $array, $name, $nl = "\n", $encoding = false ) {
        if (is_array($array)) {
            $jsArray = $name . ' = new Array();'.$nl;
            foreach($array as $key => $value) {
                switch (gettype($value)) {
                    case 'unknown type':
                    case 'resource':
                    case 'object':
                        break;
                    case 'array':
                        $jsArray .= arrayToJsArray($value, $name.'['.valueToJsValue($key, $encoding).']', $nl);
                        break;
                    case 'NULL':
                        $jsArray .= $name.'['.valueToJsValue($key, $encoding).'] = null;'.$nl;
                        break;
                    case 'boolean':
                        $jsArray .= $name.'['.valueToJsValue($key, $encoding).'] = '.($value ? 'true' : 'false').';'.$nl;
                        break;
                    case 'string':
                        $jsArray .= $name.'['.valueToJsValue($key, $encoding).'] = '.valueToJsValue($value, $encoding).';'.$nl;
                        break;
                    case 'double':
                    case 'integer':
                        $jsArray .= $name.'['.valueToJsValue($key, $encoding).'] = '.$value.';'.$nl;
                        break;
                    default:
                        trigger_error('Hoppa, egy új típus a PHP-ben? '.__CLASS__.'::'.__FUNCTION__.'()!', E_USER_WARNING);
                }
            }
            return $jsArray;
        } else {
            return false;
        }
    }
?> --- 8< --- arrayToJsArray.php --- 8< ---

« previous php.general (#203117) next »