4

我正在尝试根据数值首先为特定字段(OurPrice)输出最低数字的排名。

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 和 OurPrice 都在 6 中排名第 1)。

期望的输出:

我们的价格排名 = 1 of 6

4

2 回答 2

3

尝试使用此代码

 $newarray = (array_unique(array_values($myarray)));
 $rank = array_search($myarray['OurPrice'],$newarray)+1;
 $count = count($myarray));
 echo "Our Price Rank" . $rank . " of " . $count"
于 2012-05-09T17:32:11.510 回答
1

假设您已经对这些值进行了排序(看起来您有),您可以简单地告诉他们“OurProduct”键所在的索引。

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

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

在线尝试:http ://codepad.org/qIwTGBzG

于 2012-05-09T17:31:50.373 回答