0

我开发了一个网站,其中包含用户个人资料页面 eye_colour , hair_colour , size 等。每个项目都有一组通过下拉列表输入的值。我希望允许用户搜索这些设置范围以找到他们的理想匹配。为此,我设置了一个搜索表单,并使用元组用户向数组搜索提供了一些 SELECT 语句。IE

<?php
$var1 = SELECT ‘user’ FROM ‘profile’ WHERE ‘hair_colour’ = $hair; 
$var2 = SELECT ‘user’ FROM ‘profile’ WHERE ‘eye_colour’ = $eye;
$var3………4………..5………..n etcc
?>

我认为有一个功能可以将所有数组合并在一起,然后按用户的最多出现次数进行排序/加权,然后可以显示所有项目。有谁知道这样的 php 函数是否存在以及它的名称是什么?如果这样的函数不存在,我可以尝试 SQL,但我肯定会犯一些错误!谢谢你的帮助!

4

1 回答 1

1

我会首先使用单个查询来获取您想要的行:

$sql = "SELECT * FROM profile WHERE (hair = '$hair_esc') OR (eye = '$eye_esc')";
$result = mysql_query($sql);

然后遍历结果,为每一行分配一个分数:

$rows = array();
while ($row = mysql_fetch_array($result)){

    $row['score'] = 0;
    if ($row['hair'] == $hair) $row['score']++;
    if ($row['eye']  == $eye ) $row['score']++;

    $rows[] = $row;
}

最后按分数对列表进行排序:

usort($rows, 'sort_by_score');

function sort_by_score($a, $b){
    return $a['score'] - $b['score'];
}
于 2012-04-09T04:44:36.097 回答