PHP数组到JavaScript数组显示[object,object]


PHP array to JavaScript array shows [object, object]

我一直试图将PHP数组传递给JavaScript数组,但当我读取该JavaScript数组的内容时,它实际上显示[object,object]。

首先,我用PHP从sql语句中生成一个数组,然后将其更改为JSON格式,并将其放入JavaScript数组中。

<?php     
while ($row = mysql_fetch_assoc($result)) {
   $array[] = $row;
   }
mysql_free_result($result);
?>
<script type='text/javascript'>
    var js_array =<?php echo json_encode($array);?>;
for(i=0;i<5;i++){
    alert(js_array[i]);
}
</script>

这可能是您的$array值是多维关联数组,它导致json编码上的json对象数组。要查看候选阵列,请尝试

 for(i=0;i<5;i++){
alert(JSON.stringify(js_array[i]));
}

因为mysql_fetch_assoc返回的每一行都是一个关联数组,基本上是一个散列"key/value",json和javascript认为它是一个对象!

使用mysql_fetch_array代替

mysql_fetch_arrayhttp://au2.php.net/manual/en/function.mysql-fetch-array.php

mysql_fetch_assochttp://php.net/manual/en/function.mysql-fetch-assoc.php

$row作为mysql_query_result已经是一个数组,所以您可以用数组填充$array。这样一来,js_array[0]仍然是一个数组,js将其解释为一个对象。您需要另一个嵌套级别才能获得各个值。

假设您的php数组包含以下内容:

$myArray = array( 'first' => 1, 'second' => 2 );

现在,当您使用json_encode将其分配给javascript数组时,如:

var js_array = <?php echo json_encode( $myArray ); ?>

相当于:

js_array = { "first" : "1", "second" : "2" }; // output of json_encode 

所以基本上,js_array变量一个对象。

你可以这样查看它的内容:

console.log( js_array );