9

I'm trying to convert a PHP multidimensional array to a javascript array using the JSON encoder. When I do a var_dump, my php array looks like this:

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

This is the code I'm currently using in my view to try to convert it to a JavaScript array:

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

Whenever I run this code in the browser, the output of the conversion in the console is this:

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

Is this the correct structure for a javascript multidimensional array? I'm asking because it keeps giving me this error on the line above:

SyntaxError: Unexpected token o

4 Answers 4

16

You do not have to call parseJSON since the output of json_decode is a javascript literal. Just assign it to a variable.

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

You should be able then to access the properties as

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

This worked for 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>
3

Do not use parseJSON, that's for a string. Just do:

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

This give me in the console:

Object { Key="a", Value="asite.com"}
1
  • I didn't realize it was only for strings, thanks for the answer. Commented Jun 11, 2013 at 15:44
0

Just add single quotes in the js function,like

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.