【发布时间】:2015-06-21 06:42:59
【问题描述】:
假设我要按兼容性对用户进行排名,每个用户在不同的属性中都有一个分数(都是 1-5):
吸烟者:1
清洁度:3
夜猫子:2个
我希望每个用户数组都包含这些属性,我会将所有这些用户放在一个多维数组中。
是否有一种简单的方法可以让我根据用户与给定用户的兼容性对多维数组进行排序?
例如,我有User1: smoker = 1. Cleanliness = 3. Night owl = 2.,我想对所有其他用户进行排序以使其兼容。
我还有这 2 个其他用户:
User2: smoker = 5. Cleanliness = 1. Night owl = 4User3: smoker = 1. Cleanliness = 3. Night owl = 2.
由于User3 与User1 相同(我希望对其进行评分),因此我的数组应按如下方式排序:User1、User3、User2。困难的部分似乎是按接近度排序它们,而不是按 asc 或 desc 顺序,比如用户有smoker = 3 我要么希望排序数组中的下一个用户有smoker = 2 或smoker = 4(假设没有其他用途有 3)。我需要一种方法来衡量每个用户的每个属性的整体接近度。
有没有简单的方法来做到这一点?一个通用的方法会很棒,一个PHP的例子会更好。
【问题讨论】:
-
你能否展示一下你尝试过的艰难方法,让我试试简单的方法!
-
您可以比较并查看用户 A 与用户 B 的接近程度,但您无法订购它们,因为您有多个功能,例如3 个特征 A(0,0,0), B(1,0,0), C(0,1,0), D(2,0,0),E(2,0,0)... 距离AB、AC、BD 和 CE 是 1,所以你可能想要 ABD 和 ACE,那么你需要一个图表!
-
嗯,这仍然有明确的 ECABD 顺序(或相反),要使这一点越过你还需要 F(0,0,1) 和 G(0,0,2) 因为那你真的不知道如何对积分进行排序。 (在最后一条评论中,E 应该是 E(0,2,0))
-
您可以尝试订购它们,但根据数据的不同,结果可能会很糟糕,那么您基本上要做的就是找到从任何用户开始的所有用户的最短路径而不访问一个用户两次......这非常复杂。 (用户只是多维空间中的一个点,但距离可能是一个特殊的加权函数)
-
你能把你的数组结构和预期的输出一起发布
标签: php arrays sorting search multidimensional-array