我正在努力弄清楚如何显示从最接近的匹配到最近的匹配的搜索结果。
让我们假设这是结果的多维数组。您会注意到有些数组具有相同的“id”,但具有不同的“类别”。我假装这是一对多的关系。所以我假设,对于1“id”,用户可能已将其标记为3个不同的相关类别。
$results[] = array(
'id' => 1 ,
'text' => 'this is my first post',
'category' => 'blue'
);
$results[] = array(
'id' => 1 ,
'text' => 'this is my first post',
'category' => 'green'
);
$results[] = array(
'id' => 1 ,
'text' => 'this is my first post',
'category' => 'purple'
);
$results[] = array(
'id' => 2 ,
'text' => 'this is my second post',
'category' => 'blue'
);
$results[] = array(
'id' => 2 ,
'text' => 'this is my second post',
'category' => 'green'
);
现在,让我们假设用户选择了标准。我将以阵列形式显示它:
$criterias = array('blue', 'green', 'purple');
使用这个例子,这意味着1的$ results“id”应该首先出现,我想显示它的“文本”。这是因为它得分为3分(基于匹配$ criterias中设置的标准)。然后遵循这个逻辑,2的$结果“id”应该显示第二,因为它只获得了3中的2。
我正在寻找的最终形式是能够将“最高分”的“文本”值回显到最低分。
我在PHP中的编程水平是中级的,所以如果你能够展示一个不那么复杂的解决方案,中间人可以理解这将是很好的。
我尝试过但没有开始工作的是尝试首先尝试对其进行评分并将其放入另一个多维数组并对其进行排序,然后回应它,但我无法使其工作。