PHP - 同时对两个数组(数字和字符串)进行排序

时间:2012-06-20 13:42:51

标签: php

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

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

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

军械库大厅 军械库国家大厦 军械库餐厅大楼

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

1 个答案:

答案 0 :(得分:1)

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

更好的方法是将所有内容保存在一个2维数组中并对其进行排序:
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;
        }
    }
}

?>