0

又一个 PHP 问题。我有两个数组:一个基于字符串,另一个是数字。字符串数组包含各种建筑物的名称。数字数组跟踪搜索与建筑物的相关性。

示例:我搜索“军械库建筑”(http://yoursite.com/search.php?building=Armory+Building)

我遍历所有 25 个建筑物并显示任何包含一个或多个搜索词(军械库和建筑物)的建筑物。

军械库 军械库国家大楼 军械库食堂大楼

显然,如果搜索应该根据相关性显示结果,那么最后两个应该首先出现。如何对其进行排序,以便两个数组重新排序但保持相同的索引,这意味着我根据相关性重新排序结果(最后 2 个的“相关性”为 2,第一个结果的“相关性” ”的 1)。

4

1 回答 1

1

在这种情况下,要做到这一点并不容易。如果您有 2 个数组,并且对其中一个进行排序,则需要同时对另一个进行排序,如果元素有 chenge,则需要在第二个数组中更改相关元素。

更好的方法是将所有内容保存在一个二维数组中并对其进行排序:
http ://uk3.php.net/array_multisort

您也可以编写游览自己的排序功能,这里是示例:

<?php

$ar1 = array ('1', '2', '3', '4', '5', '6', '7', '8');
$ar2 = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');

for ($j=0;$j<count($ar1)-1;$j++) {
    for ($i=$j;$i<count($ar1)-1;$i++) {
        if ($ar1[$i]<$ar1[$i+1]) {
            //  array 1
            $tmp=$ar1[$i];
            $ar1[$i]=$ar1[$i+1];
            $ar1[$i+1]=$tmp;
            //  array 2
            $tmp=$ar2[$i];
            $ar2[$i]=$ar2[$i+1];
            $ar2[$i+1]=$tmp;
        }
    }
}

?>
于 2012-06-20T13:52:57.303 回答