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 があり、そのうちの 2 つは同じ数であるため、同じランクになります (つまり、Comp7 と OurPrice は両方とも 6 のランクの 1 です)。

望ましい出力:

当社の価格ランク = 6 の 1

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 に答える