假设我想根据兼容性对用户进行排名,每个用户都有不同属性的分数(均为1-5):
吸烟者:1
清洁度:3
夜猫子:2
我希望每个用户数组都包含这些属性,我将把所有这些用户都放在一个多维数组中。
有没有一种简单的方法可以根据用户对给定用户的兼容性对多维数组进行排序?
例如,我有一个User1: smoker = 1. Cleanliness = 3. Night owl = 2.
,我想对所有其他用户进行排序以获得兼容性。
我还有另外两个用户:
User2: smoker = 5. Cleanliness = 1. Night owl = 4
User3: smoker = 1. Cleanliness = 3. Night owl = 2.
由于User3
与User1
(我希望对其兼容性进行评级)相同,因此我的数组应按以下方式排序:User1
、User3
、User2
。困难的部分似乎是按接近度排序,而不是按asc或desc顺序排序,比如说一个用户有smoker = 3
,我希望排序数组中的下一个用户拥有smoker = 2
或smoker = 4
(假设没有其他用途有3)。我需要一种方法来衡量整体的亲密度,包括每个用户的每个属性。
有简单的方法吗?一个通用的方法会很好,一个PHP示例会更好。
在这样的问题中,您需要根据故事或逻辑对每个部分(如smoker
、Cleanliness
、night owl
、day's chicken
…)进行加权!
例如,我知道在我的应用程序中,smoker
比Cleanliness
重要10倍,因此,如果我将Cleanliness
列为5,我会将smoker
列为50!
所以用User1: smoker = 1. Cleanliness = 3. Night owl = 2
我会有
1*50 + 3*5 + 2*1 = 67
这样的排名合乎逻辑吗??这取决于!正如我前面提到的。。。
使用加权场景,可以轻松地计算每一行的值并对集合进行排序。