オブジェクトのプロパティに基づいてオブジェクトの配列を並べ替える必要があります。基本的にthisのフィクスチャーテーブルを見て、「Liverpool FC」と「Manchester City FC」に注目すると、それらのポイントの量が同じであることが分かります。複数の値に基づいて配列を並べ替える
mine私はポイントに基づいて注文しているだけなので、複数の値に基づいてこれを注文する方法がわかりません。
データは、Key
がチーム名であるクラスのインスタンス内に格納されます(このインスタンスはArray(
に格納されます)。
以下は、データを管理したクラスです。オブジェクトを最初のリンクに並べた順序で配列を並べ替えるにはどうすればよいですか?
class Calc {
private $config;
public $win = 0, $draw = 0, $loss = 0, $goalFor = 0, $goalConc = 0;
public function __construct($payload = array(0,0)) {
// Load config file
$this->config = parse_ini_file('config.ini', true);
// Add wins, losses, draws, goals for and goal conceived
$this->addData($payload);
}
// Linked data updated, ammend values
public function calcPlays() {
return 0 + $this->win + $this->draw + $this->loss;
}
public function calcPoints() {
// Add 0 to ensure value is an int
return $this->win * ($this->config['winPoints']) + ($this->draw * $this->config['drawPoints']) + ($this->loss * $this->config['lossPoints']);
}
public function calcGoalDifference() {
return ($this->goalFor - $this->goalConc);
}
public function addData($data) {
// Append goal data
$this->goalFor += $data[0];
$this->goalConc += $data[1];
// Win, Loss or Draw
if ($data[0] > $data[1]) { $this->win++;} elseif
($data[0] < $data[1]) { $this->loss++;} elseif
($data[0] == $data[1]) { $this->draw++;}
}
}
編集:
私のデータはどこにでも今ある:私は私のチェックは私が$a
が大きければ、それはチェックすると仮定して、周囲に間違った方法であると仮定してい
1 Burnley FC 13 4 2 7 12 21 -9 14
2 Leicester City FC 13 3 4 6 16 22 -6 13
3 Crystal Palace FC 13 3 2 8 21 26 -5 11
4 Swansea City FC 13 2 3 8 16 26 -10 9
5 Arsenal FC 13 8 4 1 28 13 15 28
$b
以上であればtrueを返し、次のチェックに移行しない場合はtrueを返します。
コード:
// Sort teams by points
uasort($teamData, function($a, $b) {
if ($a->calcPoints() < $b->calcPoints() && $a->calcPoints() !== $b->calcPoints()) {
return true;
} elseif ($a->calcGoalDifference() < $b->calcGoalDifference() && $a->calcGoalDifference() !== $b->calcGoalDifference()) {
return true;
} elseif($a->goalConc < $b->goalConc) {
return true;
}
return false;
});
私はサッカーを知らないので、サッカーのプレミアリーグのポジションがどのように計算されているかわかりません! –
いいえ、私はフットボールについてほとんど知っていませんが、私の推測は最初のPts、次にGD、そしてA – Sane
更新されたポストを見る –