【问题标题】:Php Multidimensional array object to Javascript JsonPHP多维数组对象到Javascript Json
【发布时间】:2012-10-07 05:46:33
【问题描述】:

我有一个多维度数组作为 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]

谢谢!

【问题讨论】:

  • 为什么不用标准的对象语法来处理这些数据?

标签: php javascript arrays json multidimensional-array


【解决方案1】:

如果你不介意使用 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 直接放入您的 javascript 中。当然,对于简单的事情来说它既快速又容易,但相信我,简单的事情通常最终总是会越来越多地被添加,不久之后你就会拥有复杂臃肿的意大利面条代码库,添加或修复这些代码库会很痛苦。最好养成将 html、css js 和 php 分开的习惯,而不是以后必须重写所有内容......
  • 我的 $.02:我宁愿像这样通过 php 打印一个 json 字符串,也不愿在页面加载时进行额外的 ajax 调用。
  • @Bosworth99,大多数传递给网页的 PHP 数据都不是静态的,以至于你想像这样将它嵌入到 js 中……如果它在哪里,为什么还要使用 JS? - 只需让 php 呈现 html 本身。如果您在 js 中嵌入动态 php 数据,那么任何更改都需要加载整个页面,而 ajax 调用只会获取新数据。我意识到对于这样一个简单的例子来说,页面加载调用似乎有点过头了,但它更多的是关于提前思考而不是学习坏习惯......我目前正在解开 3 年的意大利面条 PHP/js,我一直在踢我自己之前没有学得更好
  • @WebChemist - 当然,你是绝对正确的,但这都是关于环境的。我目前正在开发一个 ajax-heavy 管理员,它使用一个包含各种用户和系统变量的大数据对象来启动该过程,然后在用户进行编辑/更新等时用于 ajax 交互。它肯定会可以为这些内容运行初始 ajax 抓取,但在页面加载时准备好它非常方便。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 2018-08-09
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多