按相似性排列数组项

时间:2015-06-21 06:42:59

标签: php arrays sorting search multidimensional-array

假设我想按兼容性对用户进行排名,每个用户都有不同属性的分数(全部为1-5):

吸烟者:1 清洁度:3
夜猫子:2

我希望每个用户数组都包含这些属性,我将所有这些用户都放在一个多维数组中。

我是否有一种简单的方法可以根据用户对给定用户的兼容性对多维数组进行排序?

例如,我有User1: smoker = 1. Cleanliness = 3. Night owl = 2.我希望对所有其他用户进行排序以便与之兼容。

我还有其他2位用户:

User2: smoker = 5. Cleanliness = 1. Night owl = 4
User3: smoker = 1. Cleanliness = 3. Night owl = 2.

由于User3User1(我希望与之兼容),我的数组应按如下方式排序:User1User3,{{1 }}。困难的部分似乎是靠近,而不是按asc或desc顺序对它们进行排序,比如说用户有User2我要求排序数组中的下一个用户有smoker = 3或{{ 1}}(假设没有其他用途有3)。我需要一种方法来衡量每个用户的每个属性的总体接近程度。

有一种简单的方法吗?一般方法会很棒,PHP示例会更好。

1 个答案:

答案 0 :(得分:0)

在这些问题中,您需要根据故事或逻辑对每个部分(例如smokerCleanlinessnight owlday's chicken,...)进行加权!

例如,我知道在我的应用中,smokerCleanliness更重要10倍,因此,如果我将Cleanliness排列为5,我会排名{ {1}}为50!

所以smoker我有

User1: smoker = 1. Cleanliness = 3. Night owl = 2

这样的排名逻辑?这取决于!正如我之前提到的那样......

使用加权方案,您可以轻松计算每一行的值并对您的收藏品进行排序。