PHP数组嵌套问题

<?php
//Importing Database Script
require_once('verbinden.php');

//Creating sql query
$sql = "SELECT * FROM `NzokevLmsfgroups` order by group_seq asc";
$sqll = "SELECT * FROM `NzokevLmsfforums`\n"
. "ORDER BY `NzokevLmsfforums`.`forum_seq` ASC";

//getting result
$r = mysqli_query($connect,$sql);
$rr = mysqli_query($connect,$sqll);
//creating a blank array
$result = array();
//looping through all the records fetched
while($row = mysqli_fetch_array($r)){

//Pushing name and id in the blank array created
array_push($result,array(
"groupid"=>$row['group_id'],
"groupname"=>$row['group_name'],
"subforum"=>'' //我想在本行把subforum这一个做成二维数组,然后在下面的array_push里面初始化
));
}
//pushing forum_name
while($roww = mysqli_fetch_array($rr)){
for($i=0;$i<count($result);$i++)
{
if($result[$i]['groupid']==$roww['group_id'])
{
array_push($result[$i]['subforum'],array("forumname"=>$roww['forum_name'],"forumid"=>$roww['forum_id']));
//这个地方出错。如果直接用$result[$i]['subforum']= 来赋值的话,只能得到最后一条结果;如果用+=来赋值的话直接报错;用array_push的话提示subforum不是数组类
}
}
}

//Displaying the array in json format
echo json_encode(array('result'=>$result));

mysqli_close($connect);
发现了问题所在, push是对的。 原来是数据库查到的内容含中文的问题。
现在的问题是,如何将带有中文的二维数组 转化为JSON输出呢?

第1个回答  2016-12-16

前面的问题既然找到了就不再赘述,我是直接看你最后一个问题的。

如何将带有中文的二维数组 转化为JSON输出呢?
使用JSON作为提交和接收的数据格式时字符都采用UTF8编码处理,当我们的页面编码和数据库编码不是采用UTF8的时候,就极容易出现中文乱码的问题。解决办法自然是在用js或者PHP处理JSON数据的时候都采用UTF8的形式

     $data="JSON中文";  

     $newData=iconv("GB2312","UTF-8//IGNORE",$data);  //转utf8

     //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。  

追问

如果不确定是否是GB2312的话,应该怎么办呢? (比如是俄文,德文)

追答

编码和语种没关系,utf-8是国际都通用的,你开发的时候文件都统一用utf-8编码就行了

本回答被提问者和网友采纳
第2个回答  2017-10-11
试一试json_encode($array)行不.
相似回答