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);
Sign up to request clarification or add additional context in comments.

Comments

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>

Comments

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 Comment

I didn't realize it was only for strings, thanks for the answer.
0

Just add single quotes in the js function,like

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.