2013-06-11 26 views
6

Sto provando a convertire un array multidimensionale PHP in un array javascript utilizzando l'encoder JSON. Quando faccio un var_dump, il mio array PHP è simile al seguente:Converte array PHP multidimensionale in javascript array

array (size=2) 
    'Key' => string 'a' (length=1) 
    'Value' => string 'asite.com' (length=9) 

Questo è il codice Attualmente sto usando a mio parere per cercare di convertirlo in un array JavaScript:

var tempArray = $.parseJSON(<?php echo json_encode($php_array); ?>); 

Ogni volta ho eseguito questo codice nel browser, l'uscita della conversione nella console è questo:

var tempArray = $.parseJSON([{"Key":"a","Value":"asite.com"}]); 

è questo la struttura corretta per un array multidimensionale javascript? Mi sto chiedendo perché continua a darmi questo errore sulla linea di cui sopra:

SyntaxError: Unexpected token o

risposta

8

Non è necessario chiamare parseJSON poiché l'uscita di json_decode è un javascript letterale. Basta assegnarlo a una variabile.

var tempArray = <?php echo json_encode($php_array); ?>; 

Dovreste essere in grado poi di accedere alle proprietà come

alert(tempArray[0].Key); 
+0

Che ha funzionato perfettamente, grazie – user1186173

-1

Basta aggiungere apici nella funzione js, come

var tempArray = $.parseJSON('<?php echo json_encode($php_array); ?>');

0

Non utilizzare parseJSON, questo è una stringa. Basta fare:

<?php 
$php_array = array ('Key'=>'a', 'Value'=>'asite.com'); 
?> 
<html> 
<head> 

    <script type="text/javascript"> 
    var tempArray = <?php echo json_encode($php_array); ?>; 
    console.log(tempArray); 
    </script> 
</head> 
<body> 
</body> 
</html> 

Questo mi danno nella console:

Object { Key="a", Value="asite.com"} 
+0

Non mi rendevo conto che era solo per archi, grazie per la risposta. – user1186173

5

questo ha funzionato per me.

<script type='text/javascript'> 
<?php 
    $php_array = array(
     array("casa1", "abc", "123"), 
     array("casa2", "def", "456"), 
     array("casa3", "ghi", "789") 
    ); 

    $js_array = json_encode($php_array); 
    echo "var casas = ". $js_array . ";\n"; 
?> 

alert(casas[0][1]); 

</script>