2015-11-30 227 views
0

我目前正在嘗試使用一些PHP來比較用戶提供的單詞的單詞/短語數組,然後返回具有最高百分比的單詞。 。similar_text()將產品名稱與給定的字符串進行比較

到目前爲止我的代碼是(用於測試的緣故):

<?php 

$CRProductName = strtoupper("Product 30"); 

$XProdNames = array("Product 1","Product 2", "Product 300", "Not a product"); 

echo "Checking product matches for: ".$CRProductName."<br /><br />"; 

foreach ($XProdNames as $ProductName) { 
    similar_text($CRProductName,strtoupper($ProductName), $p); 
    echo "Percentage:".$p."%<br />"; 

} 

?> 

此輸出以下:

Checking product matches for: PRODUCT 30 

Percentage:84.2105263158% 
Percentage:84.2105263158% 
Percentage:95.2380952381% 
Percentage:60.8695652174% 

這是偉大的,它的作品,不過,我想就像它返回結果中最高百分比的產品名稱一樣?

任何人都可以建議一個好的路線,讓我採取?

我試着添加一個IF語句來檢查$ p的值,但最高的百分比可能每次都不一樣。

我將所有轉換爲大寫,以確保它是通過內容標記相似性而不是大小寫。

感謝,

+0

另一種選擇由@MiDri答案是通過使用['arsort()'](HTTP所有百分比存儲在一個單獨的陣列,然後排序數組://php.net/manual/en/function.arsort.php),並使用['reset()'](http://php.net/manual/en/function.reset.php)獲取第一個元素。 – T0xicCode

回答

1
<?php 

$CRProductName = strtoupper("Product 30"); 

$XProdNames = array("Product 1","Product 2", "Product 300", "Not a product"); 

echo "Checking product matches for: ".$CRProductName."<br /><br />"; 

$bestMatch = array('score' => 0, 'name' => 'None'); 

foreach ($XProdNames as $ProductName) { 
    $p = 0; 
    similar_text($CRProductName,strtoupper($ProductName), $p); 
    echo "Percentage:".$p."%<br />"; 

    if($p > $bestMatch['score']) 
    { 
     $bestMatch = array('score' => $p, 'name' => $ProductName); 
    } 

} 

print_r($bestMatch); 
?> 

你總是可以運行在simlar_text每個循環幾次,平均結果,以及如果你得到熔結果。

+0

啊,這是完美的:)謝謝。只是試了一下,完成了這項工作。 – rosey85uk

0

這很簡單。只需使用if語句來檢查foreach循環中的最高值。然後回顯最高值。這裏是你的代碼與小的改動:

<?php 

$CRProductName = strtoupper("Product 30"); 

$XProdNames = array("Product 1","Product 2", "Product 300", "Not a product"); 

echo "Checking product matches for: ".$CRProductName."<br /><br />"; 

$pHighest = 0; 
foreach ($XProdNames as $ProductName) { 
similar_text($CRProductName,strtoupper($ProductName), $p); 
    if ($p > $pHighest) { 
     $pHighest = $p; 
    } 
} 
echo "Percentage:".$pHighest."%<br />"; 

?>