0

さらに別のPHPの質問。2つの配列があります。1つは文字列ベースで、もう1つは数値です。文字列の配列には、さまざまな建物の名前が含まれています。数値配列は、建物に関連する検索の関連性を追跡します。

例:「ArmoryBuilding」(http://yoursite.com/search.php?building=Armory+Building)を検索します

25の建物すべてをループして、1つ以上の検索用語(ArmoryとBuilding)を含む建物を表示します。

アーモリーホールアーモリーステートビルアーモリーダイニングホールビル

明らかに、検索で関連性に基づいて結果が表示される場合は、最後の2つが最初に表示されます。両方の配列が並べ替えられても同じインデックスが維持されるように並べ替えるにはどうすればよいですか。つまり、関連性に基づいて結果を並べ替えます(最後の2つは「関連性」が2で、最初の結果は「関連性」があります)。 "の1)。

4

1 に答える 1

1

この場合、これを行うのは簡単ではありません。2つの配列があり、そのうちの1つを並べ替える場合は、同時にもう1つを並べ替える必要があります。要素に変化がある場合は、2番目の配列で関連する要素を変更する必要があります。

より良い方法は、すべてを1つの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;
        }
    }
}

?>
于 2012-06-20T13:52:57.303 に答える