2012-05-09 82 views
4

我想根據數值輸出特定字段(OurPrice)的排名最低的數字。php排序數組和排名特定字段

var_dump結果

$myarray = array_filter($rankresult); 
natsort($myarray); 

array(6) { 
    ["Comp7"]=> string(3) "189" 
    ["OurPrice"]=> string(3) "189" 
    ["Comp9"]=> string(6) "198.99" 
    ["Comp6"]=> string(3) "208" 
    ["Comp3"]=> string(6) "226.97" 
    ["Comp4"]=> string(3) "274" 
} 

你會發現,有6個總的數量和其中兩個是相同的號碼,因此將等於相同等級(即Comp7和會員價均位列第一6)。

所需的輸出:

優惠價等級= 1的6

+1

你想說什麼? –

+0

我不知道該從哪裏出發。沒有辦法抓取「OurPrice」的排名順序嗎? – ToddN

+0

@ToddN:應該如何輸出,只是**我們的價格排名= 1/6 **? – Nauphal

回答

3

嘗試使用此代碼

$newarray = (array_unique(array_values($myarray))); 
$rank = array_search($myarray['OurPrice'],$newarray)+1; 
$count = count($myarray)); 
echo "Our Price Rank" . $rank . " of " . $count" 
+0

類似於我的回答,我喜歡這個方法給出了我在問題中的初始數據,主要觀點是Jonathans提到的array_search。 – ToddN

1

假設您已經排序的值(它似乎你有),你可以簡單地告訴他們該指數在其中的「 OurProduct「鍵存在。

$keys = array_keys($array); 
$rank = array_search("OurPrice", $keys); 

printf("We rank %d of %d", ++$rank, count($keys)); 

在線試玩:http://codepad.org/qIwTGBzG