将多维PHP数组传递给javascript

问题描述:

I have an array($my_array) that looks something like:

array(2) {
[25]=>int(10)
[30]=>int(8)
}

I'd like to assign it to a javascript array, but am having difficulties doing it. Any suggestions?

Edit: At first, I thought I could just assign it like a string, but that isn't working:

var photo_limit = $my_array;

I tried also doing a var_dump into my js value.

I'm currently trying to use something like:

for($i=0;$i<count($my_array); $i++){
echo "a[$i]='".$a[$i]."';
";
}

Thanks.

The best way is to use json_encode. See json_encode reference

Used like this:

<script>
var array = <?php echo json_encode($array)?>;
</script>

Note, hovewer, that you'll receive Javascript object, instead of array. At a glance the only difference is if you have string keys in your array, you'll be able to access them in JS like array.*string key*, i.e. using dot notation.

1: json_encode your PHP array.

2: Decode the JSON string in JavaScript using eval(alternative: jQuery.parseJSON)

<script>
    var arr = eval('(<?php echo json_encode($thePhpArray); ?>)');
</script>