PHP中的简单用户匹配逻辑

时间:2015-08-11 13:25:55

标签: php html forms logic matching

我有一个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>

2 个答案:

答案 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++;
        }
    }
}

不是一个好的代码,只是你应该考虑的方式。