关键词:一对多实现, 学生进入只显示一个头像, 删除学生id及删除学生div, array_merge
一、一对多实现
1.1 运行平台
老师端:https://123.57.206.36:9100/demos/index.html?roomid=888
学生一:
https://123.57.206.36:9100/demos/student.html?studentId=1001&userAvatar=http://123.57.206.36:8003/uploadfiles/2016/11/1479740395ZMJkiF.jpg#888
学生二:
https://123.57.206.36:9100/demos/student.html?studentId=1002&userAvatar=http://123.57.206.36:8003/uploadfiles/2016/11/1480494624FDjMGetutor.png#888
学生三:
https://123.57.206.36:9100/demos/student.html?studentId=1003&userAvatar=http://123.57.206.36:8003/uploadfiles/2016/11/1480475198N2F0kntutor.png#888
1.2 UI图
1.3 控制头像显示一次(小目标一)
代码如下:
if($.inArray(studentId, studentIdArray)>-1){
return;
}else{
//动态追加学生头像
$("#studentIdSet").append(" <div><imgsrc="+userAvatar+" width='30px';height='30px'></div>");
//把学生id追加到数组中,供下次判断
studentIdArray.push(studentId);
}
注:如果到来的学生id在数组中,$.inArray(studentId,studentIdArray)返回0,就直接退出不追加;如果来的学生id不在数组中,$.inArray(studentId, studentIdArray)返回-1,就在原来的div中追加一个小div,并把这个学生id追加到数组studentIdArray中。接下来,研究学生断线时,要把头像从div中删除,并且studentId从数组studentIdArray中删除。现在运行效果如下:
1.4 删除学生id及删除学生div(小目标二)
已经实现,代码如下:
//断线重连时,清空学生头像div
$('#studentIdSet').empty();
//断线重连时,清空学生id数组
studentIdArray.splice(0,studentIdArray.length);
注:思路是,学生断线时,第一步清空放学生头像的div,$('#studentIdSet').empty();
接着,清空之前追加形成的学生id数组studentIdArray,
studentIdArray.splice(0,studentIdArray.length);因为一个学生掉线,所有学生都会重连一次,这样的话,会重新走appendDiv,重新把头像追加一次,就不用判断哪个学生掉线了。当然,这样是有问题的,比方说一个老师正在和张三对话,李四掉线了,张三也会重连一次,这个放到后期解决。
二、php
2.1PHP array_merge() 函数
1)定义和用法
array_merge() 函数用于把一个或多个数组合并为一个数组。
提示:您可以向函数输入一个或者多个数组。
注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
注释:如果您仅仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引(参见下面的实例 1)。
提示:该函数与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
2)语法
array_merge(array1,array2,array3...)
3)看个例子
注:是两个数组,合并为一个数组,键名顺延。
4)例子二如下:
注:如果是单一数组,会对键名进行从0开始,重新赋值,这个非常有用,在做word时,常对数组进行重新定义,键名是跳跃的。
2017年2月18日星期六