【问题标题】:json multidimensional array and jquery?json多维数组和jquery?
【发布时间】:2010-11-20 22:53:32
【问题描述】:
我用 PHP 创建这个输出:
foreach ($bk as $blink) {
$out["url"][] = $blink->url;
$out["anchor"][] = $blink->anchor;
}
$json = Zend_Json::encode($out);
回声($json);
我想通过 $.ajax 调用接收和处理输出。
您能否为我指出一个关于使用 javascript/jquery 的多维数组的不错的教程,或者帮助我循环 * 遍历 json 结果?我对此感到有些困惑。
- 我想把它们放在桌子上,所以我将使用
<td>url-i</td><td>anchor-i</td>。这部分,我想通了。将正确的值放在 url-i 和 anchor-i 上是问题所在。
【问题讨论】:
标签:
php
javascript
jquery
zend-framework
【解决方案1】:
我想 JSON 输出会是这样的:
{'url': ['url1', 'url2', ... ],
'anchor': ['anchor1', 'anchor2', ... ]}
如果是这种情况,那么它们将具有相同的长度(并且重要的是相同的索引),您可以使用 jQuery.each() 循环遍历两者之一。
$.getJSON('jsonapp.php', function(data) {
$.each(data.url, function(index, url) {
var anchor = data.anchor[index];
$('#mytable').append('<tr><td>' + url + '</td><td>' + anchor +'</td></tr>');
});
});
我没有运行该代码,所以它可能有一些缺陷,但这就是它的要点。
【解决方案2】:
PHP 可以自己尝试cast objects into arrays,对于简单的东西,它通常可以正常工作。
对于多维数组,在数组方面,Javascript 与大多数其他高级编程/脚本语言并没有太大区别。真的,任何关于多维数组的在线教程都可以。多维数组只是数组的数组。
当您在客户端收到字符串时,您只想解析它。 jQuery 有its own method,但你可以使用JSON.parse。之后,根据您设置阵列的方式,您会想要执行类似的操作。
<? $count = count($json_parsed['url']); for($i = 1; $i < $count; $i++) : ?>
<td><?=$json_parsed['url'][$i];?></td>
<td><?=$json_parsed['anchor'][$i];?></td>
<? endfor; ?>
虽然这在哲学上可能不是最好的方法。如果你有一大堆对象并且你想用它们制作一个表,最好的方法是创建一个由关联数组表示的这些对象的数组(有点像其他编程语言中的哈希表)。 PHP 本机尝试将对象转换为关联数组。如果Zend_Json::encode 自动执行,我不会感到惊讶。如果是这样,您可能只想简单地拉动:
echo Zend_Json::encode($bk);
如果没有,请告诉我,我们将讨论如何做到这一点。