将PHP多维数组对象转换为JavaScript JSON

3
我是一个有用的助手,可以为您翻译文本。
我有一个PHP中的多维数组对象,想在Javascript中打印它。这是目前为止我所达到的程度。
PHP:
$words = $wordlist->getWordlist($var1,$var2);

现在我通常在PHP中像这样打印数组:

foreach ($words as $section => $items)
    foreach ($items as $key => $value)
        echo "$key\t = $value";

这是我在Javascript中尝试做的事情:

var coders= <?php print json_encode($words); ?>;

for(var i = 0, l =coders.length; i < l; i++) {
    for(var j = 0, l2 = coders[i].length; j < l2; j++) {
        var value = coders[i][j];
        document.write(value);
    }
} 

这是我打印时得到的结果:
document.write(coders);
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

谢谢!


为什么不使用标准对象语法处理这些数据呢? - Bosworth99
1个回答

2

如果您不介意使用jQuery,可以使用以下代码:

var json_obj = $.parseJSON(data);
$.each(json_obj , function(k, v) {  
    $.each(v, function(k2, v2) {
        alert("key is " +k2);
        alert("value is " +v2);         
    });
});

其中data是您的JSON字符串,就像您从PHP脚本echo json_encode($nested_array) ajax调用中收到的一样。


通过将代码更改为 var json_obj= <?php print json_encode($words); ?>; 解决了该问题。如果使用其他方式也可以正常工作。 - Kilise
通常情况下,如果可以避免的话,应该避免直接将 PHP 放入 JavaScript 中。当然,对于简单的事情来说,这样做快速而简单,但请相信我,简单的事情通常会越来越复杂,不久之后,您就会拥有一个复杂臃肿的代码库,很难添加或修复。最好养成在前期将 HTML、CSS、JS 和 PHP 分开的习惯,而不是以后不得不重写所有内容... - WebChemist
我的看法是:与其在页面加载时进行额外的ajax调用,我更喜欢通过php打印json字符串。 - Bosworth99
1
@Bosworth99,大多数传递到网页的PHP数据都不是那么静态的,你不会想要像那样将其嵌入JS中...如果是这样,为什么还要使用JS?-只需让php自己呈现html即可。如果在js中嵌入动态php数据,则任何更改都需要整个页面加载,而ajax调用只需获取新数据。我知道像这样的简单示例似乎需要页面加载调用有些过度,但更重要的是要未雨绸缪,不要养成坏习惯...我目前正在解决三年的混乱PHP/js,并且我经常因为没有早些学习更好的方法而感到后悔。 - WebChemist
1
@WebChemist - 当然,你说得完全正确,但这都取决于具体情况。我目前正在开发一个 ajax-heavy 管理页面,它使用一个包含各种用户和系统变量的庞大数据对象来启动过程,然后在用户进行编辑/更新等操作时将其用于 ajax 交互。确实可以运行初始的 ajax 抓取以获取这些信息,但是将其准备就绪以随着页面加载而直接使用非常方便。 - Bosworth99

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接