菜鸟就是菜鸟,该给的没给,我也懒得问了,我假设消息表结构为,name,userid,time,reid
reid表示接收者的id,那么表数据就类似这样,
name, userid, time, reid
qqq, 34013, 2015/2/11 9:44:22, 34362
aaa, 34362, 2015/2/11 9:45:50, 34484
....
算法步骤,
1将数据的层级关系转为数组的维数关系
2将数组转为json数据
$arr = get_category();//将数据变为数组格式
$json = arr_to_json($arr);//将数组变为json数组,所有语言都会提供这种函数的。
代码用php写的,你懂不懂都算了
function get_category($re_id=0,$flag=true){
$arr=array();
if($flag){
$sql = "select * from message a left join message b on a.userid=b.reid where b.userid is NULL";//查询第一级的数据,也就是userid没有在reid中出现过的数据
}else{
$sql = "select * from message where userid=$re_id";//查询子级数据
}
$result = array(a_object,b_object,,,)=sql_query($sql);//查询结果一个数组或列表格式
if($result){
foreach($result as $re){//循环数组
if(get_category($re.reid,false))//如果子级不为空
$re['receive'] = get_category($re.reid,false);
$arr[] = $re;
}
return $arr;
}