按数组值

时间:2017-01-23 11:30:30

标签: php mysql wordpress sql-order-by

想象一下,我们有一个用户列表,我们试图将您与其中一个匹配。你有10个东西的清单,你必须选择你喜欢的东西。

说:巧克力,帆船,跑步,骑自行车,NetFlix等......

根据您检查的复选框,它会将其作为数组或字符串存储在数据库中(我对其中的任何一个都很灵活。)

所以我现在需要按谁勾选最类似你的复选框来订购用户列表。

简单地说,如果我选择"巧克力,帆船&运行"而且有人刚刚吃了#34;巧克力"然后他们会比那些我选择的完全相同的人更进一步。

在尝试使用pre_user_query操作挂钩破解WP_User_Query时,我有以下行:

$query->query_orderby = 'ORDER BY FIND_IN_SET("chocolate", wp_usermeta.meta_value) > 0 ASC';

......但没有运气。

我有一个名为meta_key的用户babud_likes,该数组存储在该密钥的meta_value中。

1 个答案:

答案 0 :(得分:1)

也许您可以将数据存储为二进制字符串?例如,如果我们有类别巧克力,糖果,糖果,足球我们会将这些中的每一个表示为字符串中已知位置的单个位。例如,对于喜欢巧克力,糖果和足球的人,我们可以使用结构(巧克力,糖果,糖果,足球)来写作:

1011

或者喜欢巧克力,糖果和足球的人我们可以写

1101

假设我们编写了一个简单的SQL查询(SELECT id, likes FROM users WHERE id=1 OR id=2)。然后,我们可以得到两个likes值并按位AND,它比较字符串中的每个位,如果两个位匹配则返回1。因此,对于我们的两个样本用户,我们会这样做;

$result = 1011 & 1101;
// Outputs '1001'

从结果中我们可以推断出两个人都喜欢巧克力和足球,因为第一个位置的1表示巧克力,而第四个位置的1表示足球。

在将其集成到Wordpress中我会考虑用户creating an all new table - 最终只会使用默认的Wordpress用户表遇到问题。