0
ランキング機能を作成する必要があります。多次元配列の結び付き関数
私の$ passage配列には、 'user'、 'username'、 'note'、 'classement'の各キーがあります。
「メモ」キーでランク付けし、「ユーザー名」キーで配列を並べるには、「クラス分け」キーを設定します。ここで
は私が試したものです:
for ($i = 0; $i < sizeof($passages); $i++) {
for ($j = 0; $j < sizeof($passages); $j++) {
$test = $this->compare($passages[$i]['note'], $passages[$j]['note']);
if ($test < 0) {
$tmp = $passages[$j];
$passages[$j] = $passages[$i];
$passages[$i] = $tmp;
} else if ($test >= 0) {
$tmp = $passages[$i];
$passages[$i] = $passages[$j];
$passages[$j] = $tmp;
}
}
}
は、機能比較:このランキング機能で
if ($a==$b) return 0;
return ($a<$b)?-1:1;
を、私はネクタイの世話をするために機能を追加しました:
$rank = 1;
for ($i = 0; $i < $nbTotal; $i++) {
// Si la note du passage actuel est égale à la note du passage précédent,
// le classement est égal au classement du passage précédent
if ($i > 0 && $passages[$i]['note'] == $passages[$i - 1]['note']) {
$passages[$i]['classement'] = $passages[$i - 1]['classement'];
}
// Sinon le classement est égal à la valeur de $rank
else {
$passages[$i]['classement'] = $rank;
}
$rank++;
}
私がテストしました私の関数とそれは、ユーザーIDと 'classement' key = user IDの順で配列された配列を返しています。
は、私が何を得る:
$passages = array(
array(['id'] => "1"
['username'] => "1124",
['note'] => "22",
['classement'] => "1"),
array(['id'] => "2",
['username'] => "1001",
['note'] => "10",
['classement'] => "2"),
array(['id'] => "3",
['username'] => "1100",
['note'] => "15",
['classement'] => "3"),
array(['id'] => "4",
['username'] => "1120",
['note'] => "5",
['classement'] => "4"),
array(['id'] => "5",
['username'] => "1200",
['note'] => "15",
['classement'] => "5")
);
は、私が欲しいもの:
$passages = array(
array(['id'] => "2"
['username'] => "1001",
['note'] => "10",
['classement'] => "4"),
array(['id'] => "3",
['username'] => "1100",
['note'] => "15",
['classement'] => "2"),
array(['id'] => "4",
['username'] => "1120",
['note'] => "5",
['classement'] => "5")
array(['id'] => "1",
['username'] => "1124",
['note'] => "22",
['classement'] => "1"),
array(['id'] => "5",
['username'] => "1200",
['note'] => "15",
['classement'] => "2")
);
どうもありがとう!それは私が欲しかったものです!私のコードは、このソリューションではさらに小さくなりました。 –