开发者社区> 问答> 正文

关于PHP比较数组相似度的方法

现在有这样一个问题。。
题库里有50道题,每个用户过来都会随机抽取十道题来回答,系统会将每个用户所答题目ID和相应答案用,号拼接成字符串,存在一个表里,答案没有对错,最后只想从这些数组中取出答题相似度最高的。。

应该怎么做

展开
收起
吴孟桥 2016-06-06 18:13:06 2405 0
1 条回答
写回答
取消 提交回答
  • array_intersect_assoc带索引检查计算数组的交集

    
    $sub_sql = 'select * from f_subject';
    
     $sub_quy = $db->select($sub_sql);
    
     $other_array = array(); #所有用户题目ID和答案数组
    
     $like_user = array();
    
     for($a=0;$a<count($sub_quy);$a++){
    
     if($sub_quy[$a]['id'] != $quy[0]['id']){
    
     $other_array = array('name'=>$sub_quy[$a]['name']); 
    
     $subject_array_a = explode(',',substr($sub_quy[$a]['subject'],0,strlen($sub_quy[$a]['subject'])-1));
    
     $answer_array = explode(',',substr($sub_quy[$a]['answer'],0,strlen($sub_quy[$a]['answer'])-1));
    
     for($o=0;$o<count($subject_array_a);$o++){ 
    
     $other_array += array($subject_array_a[$o]=>$answer_array[$o]); 
    
     }
    
     // echo '<pre>';
    
     #print_r($other_array);
    
     $inter_array = array_intersect_assoc($other_array,$mage_array);
    
     $count_inter = count($inter_array);
    
     if($count_inter >= 3){
    
     $like_user += array($other_array['name']=>$count_inter);
    
     }
    
     }
    
     // echo $count_inter;
    
     // echo '</pre>'; 
    
     }
    2019-07-17 19:29:12
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载