2010-02-01 4 views

Répondre

14

Vous pouvez utiliser la fonction json_encode, pour revenir en toute sécurité un objet JSON que vous pouvez utiliser directement en JavaScript:

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

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

Sorties:

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

bonne réponse, une balise php complète aurait été tellement plus cool que les balises courtes si (sur la ligne 7). –

3

Quelque chose comme ça?

<?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"; 
?> 

Et peut-être pour plus d'informations:
http://www.scratch99.com/2008/03/creating-javascript-array-dynamically-from-php-array/

+0

Il est plus agréable: echo " \ n"; echo "var js_array =". json_encode ($ php_array). "\ n"; # ..... reste de JavaScript ..... echo " \ n"; –

+1

Pas besoin de la valeur de la clé $, car un tableau JS n'est pas un hashmap. Utilisez simplement js_array.push ($ value). – bdl

2

JSON est votre choix, depuis une version PHP 5.x, PHP contient une fonction json_encode().

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

Comme d'habitude, certains gars gentils a écrit des fonctions json_encode() pour les versions précédentes, PHP, checkout the comments on php.net.

+0

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

1

Le tableau de votre PHP doit être exposé à JavaScript d'une manière ou d'une autre. Si vous voulez le tableau disponible à JS sur la charge de la page initiale, vous pouvez le faire comme ceci:

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

Si la variable n'a pas besoin d'être créé sur la charge de la page initiale, vous pouvez faire quelque chose de similaire, mais utilisez un appel AJAX. Faites simplement répondre votre script PHP avec le tableau formaté pour JS, et stockez le résultat de l'appel dans votre variable JS.

1

variante du PHP JS sans extension JSON, en utilisant join/imploser et aucune construction en boucle:

<?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> 
Questions connexes