我想從文本文件中找到關鍵字,當找到關鍵字時,我爲每場比賽提供1分。下面的程序有效地計算得分,但不會將得分從高到低排序。請爲我提供解決此問題的方法。PHP沒有按預期排序
下面是代碼:
<?php
$lines = file("Abstract.txt");
$Result = array();
$index = 0;
$search_term1= "Tamoxifen";
$search_term2="Doxorubicin";
$search_term3="Synergistic";
$search_term4="MCF-7";
$search_term5="Inhibition";
$keywords = array($search_term1, $search_term2, $search_term3);
$replace_keyword = array("<b>".$search_term1."</b>", "<b>".$search_term2."</b>", "<b>".$search_term3."</b>");
foreach ($lines as $line_num => $line)
{
if($line_num > 1)
{
$arr = explode("\t", $line); //Reads tab separated file
$Pubmed = trim((string)$arr[0]); //first column is Pubmed
$title = trim((string)$arr[1]); //second column is title
$abstract = trim((string)$arr[2]); //third column is abstract
$score = substr_count(strtoupper($title), strtoupper($search_term1)) + substr_count(strtoupper($abstract), strtoupper($search_term1)); //counts occurrence of 1st string in title & abstract
$score += (substr_count(strtoupper($title), strtoupper($search_term2)) + substr_count(strtoupper($abstract), strtoupper($search_term2))); //counts occurrence of 2nd string in title & abstract
$score += (substr_count(strtoupper($title),strtoupper($search_term3)) + substr_count(strtoupper($abstract), strtoupper($search_term3))); //counts occurrence of 3rd string in title & abstract
//store the result as well as data into array
$Result[$index]["Pubmed"] = $Pubmed;
$Result[$index]["<BR>score"] = $score;
$Result[$index]["<BR>title"] = str_ireplace($keywords, $replace_keyword, $title);
$Result[$index]["<BR>abstract"] = str_ireplace($keywords, $replace_keyword, $abstract);
$index++;
}
}
//sort the array by score
$sorter=array();
$ret=array();
reset($Result);
$key = "score";
foreach ($Result as $ii => $va) {
$sorter[$ii]=$va[$key];
}
arsort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$Result[$ii];
}
$Result=$ret;
foreach($Result as $instance)
{
$keys = array_keys($instance);
foreach($keys as $key)
{
if(!strcmp($key,"abstract"))
echo "\n<b>".$key."</b> : ".$instance[$key]."\n";
else
echo "<b>".$key."</b> : ".$instance[$key]."\n";
}
echo "\n\n_________________________________________________________________________________________________________________________________________________________________________________________________\n\n";
}
?>
請提供一個*簡單的*代碼,只是*足夠重現問題。 –
結果是什麼樣的,你想讓它看起來像什麼? – jeroen
@ jeroen:我有大約400篇文章,每篇都有Pubmed ID,標題和摘要。我試圖在文章中搜索關鍵詞並計算每場比賽的分數。下面的程序會計算得分,但不會對其進行排序。結果應該是像$ Pubmed
$分
$標題
$摘要,現在這將是所有的400篇文章,我只是希望文章與較高的分數在頂部,然後是較低的分數。 – Mary