さて、私はしばらくの間これに頭を悩ませてきました、そしてグーグル検索は私を無駄に正しい方向に導くために何かを見つけようとしています。
だから私は次のようなランク付けされたリーダーボード配列を持っています:
[1] = array('points' => '99', 'rank' => '1');
[2] = array('points' => '90', 'rank' => '2');
[3] = array('points' => '90', 'rank' => '2');
[4] = array('points' => '80', 'rank' => '4');
[5] = array('points' => '70', 'rank' => '5');
[6] = array('points' => '70', 'rank' => '5');
次に、ランクに基づいてポイントを付与するための事前定義された配列を備えた報酬ポイントシステムがあります。
[1]=10;
[2]=9;
[3]=8;
[4]=7;
[5]=6;
[6]=5;
同点でない場合は、2つの配列を一致させ、配列キーに基づいてポイントを付与します。しかし、私は同点を考慮しているので、同点の報酬ポイントをすべての同点のユーザー間で分割しようとしています。したがって、上記の参照では、2位で同点のプレーヤー2と3は、報酬ポイント9と8を分割します...したがって、両方に8.5ポイントが与えられます。
したがって、両方のアレイをマージするときに私が探している最終結果は次のようになります。
[1] = array('points' => '99', 'rank' => '1', 'reward' => '10');
[2] = array('points' => '90', 'rank' => '2', 'reward' => '8.5');
[3] = array('points' => '90', 'rank' => '2', 'reward' => '8.5');
[4] = array('points' => '80', 'rank' => '4', 'reward' => '7');
[5] = array('points' => '70', 'rank' => '5', 'reward' => '5.5');
[6] = array('points' => '70', 'rank' => '5', 'reward' => '5.5');
リーダーボードは一日の終わりまで絶えず変化する可能性があるので、複雑になりすぎないようにしています。誰かが私を助けてくれると彼らが見た何かを私に指摘できるかどうか、または彼らが実装のアイデアを持っているかどうか疑問に思っています。
私の試みで最も苦労しているのは、リーダーボード配列をループし、「ランク」が同じになることを継続的に楽しみにして、何を合計して分割する必要があるかを知ることです。先読みで行った次の項目で同じテストを実行する代わりに、先の配列をスキップします。混乱している場合は申し訳ありませんが、明らかに混乱しています。