首页 > 解决方案 > 将 PHP 数组插入带有键值的 JavaScript 变量

问题描述

首先,对不起,如果我的问题是重复的,但我真的尝试了很多东西但没有结果。其次,我的问题是,在使用“json_encode($php_array)”并将其插入 js 变量后,输出是“[object Object]”,而不是 $php_array。

对数组使用键(错误结果)

<script type="text/javascript">
// Some functions here
<?php
    $php_array = array('name'=>'joe','10','cat');
    $js_array = json_encode($php_array);
    echo "var javascript_array = ". $js_array . ";\n";
?>
alert(javascript_array); // Output is: [object Object]
</script

不使用密钥(好结果)

<script type="text/javascript">
// Some functions here
<?php
    $php_array = array('joe','10','cat');
    $js_array = json_encode($php_array);
    echo "var javascript_array = ". $js_array . ";\n";
?>
alert(javascript_array); // Output is: abc,def,ghi
</script

我期望[{"name":"joe","cat"}]的输出,但输出是[object Object]

标签: javascriptphparrays

解决方案


这是因为 javascriptalert()函数不是很聪明 - 它知道如何很好地输出数组,但是对于对象它只是放弃并说“它是一个对象!”。

您可以像这样对对象进行漂亮的表示:

const prettyOutput = JSON.stringify(javascript_array, null, 4); //use indentation of 4 spaces
alert(prettyOutput);

推荐阅读