我将json数组引入Jquery - 没问题,你如何解析一个多维数组,你可能有“子”数组。
PHP来“创建”从数据库中拉出的json
$STH = $DBH->query("SELECT FID FROM flist WHERE ParentID='0'" );
$STH->setFetchMode(PDO::FETCH_OBJ);
while( $row = $STH->fetch()) :
$farray[$row->FID]['FID'] = $row->FID;
$RTH = $DBH->query("SELECT FID FROM flist WHERE ParentID= ".$row->FID." " );
$RTH->setFetchMode(PDO::FETCH_OBJ);
$fquerycount = $RTH->rowCount();
if($fquerycount!=0):
while( $res = $RTH->fetch()) :
$farray[$row->FID]['FCHILD'][$res->FID] = $res->FID;
endwhile;
endif;
endwhile;
编码:
echo $jc . '(' . json_encode($forum) . ')';
注意:$ jc是一个jsoncallback。
现在你如何在这里“阅读”它:
$.getJSON("http://127.0.1/jtest3.php?start=0&jsoncallback=?", function(data){
$.each(data, function(i,item){
$('#testit').append('<li'+item.FID+'<ul><li>'+item.FCHILD+'</li><ul></li>');
});
});
在我看来 - 好吧我确定它必须 - 子数组的另一个.each()循环?代码适用于除显示子项之外的所有方面。如果我从子数组中删除[$ res-&gt; FID]键,那就没问题,但显然我只得到最后一个数据库条目,问题是子数组是多于一个条目。您将拥有1个父项(生成$farray[$row->FID]['FID'] = $row->FID;
的第一个查询),然后是第二个查询的子项,即$farray[$row->FID]['FCHILD'][$res->FID] = $res->FID;
现在此数组中可能有2个,10个,20个等。你如何运行第二个循环?非常感谢。感谢
答案 0 :(得分:0)
检查此帖子Writing Multidemisional Array jQuery并更具体地说明此评论
“javascript中没有多维数组,但是你可以拥有一个元素为数组的数组”
所以是的,你必须检查每个数组元素是否也是一个数组并循环通过它。