2010-02-01 15 views

risposta

14

È possibile utilizzare la funzione json_encode, per restituire in modo sicuro un oggetto JSON che può essere utilizzato direttamente in JavaScript:

<?php 
    $phpArray = array("foo", "bar", "baz"); 
    //.... 
?> 

<script type="text/javascript"> 
var jsArray = <? echo json_encode($phpArray); ?>; 
</script> 

Uscite:

<script type="text/javascript"> 
var jsArray = ["foo","bar","baz"]; 
</script> 
+0

buona risposta, un tag php completo sarebbe stato dannatamente più bello dei tag brevi (sulla linea 7). –

3

Qualcosa di simile?

<?php 
    # create PHP array: 
    $php_array = array("one", "two", "three"); 

    # "pass" php array to JS array: 
    echo "<script language='JavaScript'>\n"; 
    echo "var js_array = new Array();\n"; 

    $ix = 0; 
    foreach($php_array as $key => $value) { 
    echo "js_array[$key] = $value;\n"; 
    } 

    # Rest of JavaScript..... 
    echo "</script>\n"; 
?> 

E forse per ulteriori informazioni:
http://www.scratch99.com/2008/03/creating-javascript-array-dynamically-from-php-array/

+0

E 'più bello: echo " \ n"; –

+1

Non è necessario il valore della chiave $, poiché una matrice JS non è una hashmap. Basta usare js_array.push (valore $). – bdl

2

JSON è la tua scelta, dal momento che alcune versioni PHP 5.x, PHP contiene una funzione json_encode().

<script type="text/javascript"> 
var arr = <?php echo json_encode($php_array); ?> 
</script> 

Come al solito, alcuni ragazzi belle scritto json_encode() funzioni per la più vecchia versione di PHP, checkout the comments on php.net.

+0

PHP 5.2, come da http://us.php.net/json_encode –

1

L'array nel PHP deve essere esposto a JavaScript in qualche modo. Se si desidera che la matrice a disposizione JS sul caricamento della pagina iniziale, si potrebbe fare in questo modo:

<script type="text/javascript"> 
    myJSArray = <?php echo function_that_generates_array_in_js_syntax($myPHPArray); ?>; 
</script> 

Se la variabile non deve essere creato sul caricamento della pagina iniziale, è possibile fare qualcosa di simile, ma usa una chiamata AJAX. Basta che lo script PHP risponda con l'array formattato per JS e memorizzi il risultato della chiamata nella tua variabile JS.

1

variante per il PHP per JS senza estensione JSON, utilizzando unire/implode e nessun ciclo costrutto:

<?php 
$array= array('one','two','three'); 
$js_array= '["'. join('","', $array) .'"]'; 
?> 
<script type="text/javascript"> 
var js_array= <?php echo $js_array;?>; 
alert(js_array); 
</script> 
Problemi correlati