2013-06-11 15 views
6

Próbuję przekonwertować wielowymiarową tablicę PHP na tablicę javascript za pomocą enkodera JSON. Kiedy zrobić var_dump, mój tablicy PHP wygląda następująco:Konwertuj wielowymiarową tablicę PHP na tablicę javascript

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

Jest to kod obecnie używam w moim zdaniem, aby spróbować go przekonwertować do tablicy javascript:

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

Kiedykolwiek I uruchomić ten kod w przeglądarce, wyjście konwersji w konsoli to:

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

Czy to prawidłowa struktura javascript wielowymiarowej tablicy? Pytam, ponieważ utrzymuje daje mi ten błąd w wierszu powyżej:

SyntaxError: Unexpected token o

Odpowiedz

8

Nie musisz zadzwonić parseJSON ponieważ wyjście json_decode jest javascript dosłowne. Po prostu przypisz ją do zmiennej.

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

Powinieneś móc następnie uzyskać dostęp do właściwości jak

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

To zadziałało doskonale, dziękuję – user1186173

-1

Wystarczy dodać apostrofów w funkcji js, jak

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

0

Nie używaj parseJSON, to na ciąg znaków. Wystarczy zrobić:

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

To daje mi w konsoli:

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

Nie zdawałem sobie sprawy, że to tylko dla strun, dzięki za odpowiedź. – user1186173

5

Ten pracował dla mnie.

<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> 
Powiązane problemy