1

値が取得され、PHP の配列に格納される InnoDB テーブルがあります。

ここで、検索文字列の一致に関連して配列を並べ替えたいと思います。

例: 「こんにちは、お元気ですか」を検索すると、文字列が「はい」「どのように」「ある」「あなた」のように単語に分割され、検索後の結果は次のようになります。

 [0] hai how are all people there

 [1] how are things going 

 [2] are you coming

 [3] how is sam

...

基本的なPHP関数だけで関連性によって配列をソートする方法はありますか?

4

2 に答える 2

0
$searchText = "hai how      are you"; //eg: if there are multiple spaces between words
$searchText = preg_replace("(\s+)", " ", $searchText );
$searchArray =& split( " ", $searchText );

$text = array(0 => 'hai how are all people there',
              1 => 'how are things going ',
              2 => 'are you coming',
              3 => 'how is sam',
              4 => 'testing ggg');

foreach($text as $key=>$elt){
    foreach($searchArray as $searchelt){
        if(strpos($elt,$searchelt)!== FALSE){
            $matches[] =  $key;  //just storing key to avoid memory wastage
            break;
        }                
    }            
}

//print the matched string with help of stored keys
echo '<pre>matched string are as follows: ';
foreach ($matches as $key){

  echo "<br>{$text[$key]}";    
}
于 2012-11-16T11:38:39.870 に答える
0

多分このようなもの:

$arrayToSort=array(); //define your array here
$query="hai how are you";

function compare($arrayMember1,$arrayMember2){
     $a=similar_text($arrayMember1,$query);
     $b=similar_text($arrayMember2,$query);
     if($a>$b)return 1;
     else return -1;
}

usort($arrayToSort,"compare");

similar_text と usort の機能については、php のマニュアルを参照してください。

于 2012-11-16T11:39:15.653 に答える