我有一个html页面,其中包含1个用户名的文本框字段和5个用户的复选框,用于指示他们喜欢哪种类型的音乐(环境,摇滚,说唱,爵士,流行音乐)。我再次复制表单字段两次,以便我可以获得以下数据值:
汤姆
环境
摇滚
说唱
苏
摇滚
说唱
爵士
贝蒂
摇滚
说唱
爵士
在PHP中进行用户匹配算法的最佳方法是什么?从关于苏和贝蒂的值将匹配100%和汤姆将与其他两个匹配不到100%。
有什么建议吗?
下面是代码
<p>Put in your name and pick the music genres you like:</p>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="12%"><label for="name"></label>
<input type="text" name="name1" id="name1" vale="name1" placeholder="name 1"/></td>
<td width="12%"><label for="name"></label>
<input type="text" name="name2" id="name2" value="name2" placeholder="name 2"/></td>
<td width="13%"><label for="name3"></label>
<input type="text" name="name3" id="name3" value="name3" placeholder="name 3"/></td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" id="checkbox" />
<label for="checkbox">Ambient</label></td>
<td><input type="checkbox" name="checkbox" id="checkbox" />
<label for="checkbox">Ambient</label></td>
<td><input type="checkbox" name="checkbox" id="checkbox" />
<label for="checkbox">Ambient</label></td>
</tr>
<tr>
<td><input type="checkbox" name="Rock" id="Rock" value="Rock"/>Rock</td>
<td><input type="checkbox" name="Rock" id="Rock" value="Rock"/>
Rock</td>
<td><input type="checkbox" name="Rock" id="Rock" value="Rock"/>
Rock</td>
</tr>
<tr>
<td><input type="checkbox" name="Rap" id="Rap" value="Rap"/>Rap</td>
<td><input type="checkbox" name="Rap" id="Rap" value="Rap"/>
Rap</td>
<td><input type="checkbox" name="Rap" id="Rap" value="Rap"/>
Rap</td>
</tr>
<tr>
<td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" />Jazz</td>
<td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" />
Jazz</td>
<td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" />
Jazz</td>
</tr>
<tr>
<td><input type="checkbox" name="Pop" id="Pop" value="Pop" />Pop</td>
<td><input type="checkbox" name="Pop" id="Pop" value="Pop" />
Pop</td>
<td><input type="checkbox" name="Pop" id="Pop" value="Pop" />
Pop</td>
</tr>
</table>
<br />
<input type="submit" name="button" id="button" value="Submit" />
</form>
答案 0 :(得分:2)
如果您有选项作为数组,您可以使用array_diff函数执行某些操作。即。
<?php
$tom = array("Ambient", "Rock", "Rap");
$sue = array("Rock", "Rap", "Jazz");
$betty = array("Rock", "Rap", "Jazz");
//compare tom to sue
$total = count($tom);
$diff = count(array_diff($tom, $betty));
$percent = 100 - ($diff / $total * 100);
echo round($percent, 2)."% match between Tom and Sue";
答案 1 :(得分:2)
使用关联数组向每个用户添加流派列表。然后比较循环中的流派:
$user_genre['Tom']=array('Ambient', 'Rock', 'Rap');
$user_genre['Sue']=array('Rock', 'Rap', 'Jazz');
$user_genre['Betty'] =array('Rap', 'Rock', 'Jazz');
$match=0;
foreach ($user_genre['Tom'] as $tom_genre){
foreach ($user_genre['Sue'] as $sue_genre){
if ($tom_genre == $sue_genre){
$match++;
}
}
}
不是一个好的代码,只是你应该考虑的方式。