Мне нужно сортировать массив объектов на основе свойств объектов. В основном, если вы посмотрите на эту таблицу фиксации и заметите «Ливерпульский ФК» и «Манчестер Сити ФК», вы можете увидеть, что они имеют одинаковое количество очков, поэтому они упорядочены на основе других значений выше. < /p>
Теперь, если вы посмотрите на мой, я заказываю только на основе точек, я не уверен, как заказать это на основе нескольких значений.
Данные хранятся в экземпляре класса, этот экземпляр хранится в массиве () с ключом именем команды Полем < /p>
Ниже приведен класс, который управлял данными, как я могу переоценить массив так, чтобы объекты были для того, как первая ссылка их заказала? < /p>
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++;}
}
}
< /code>
edit: < /strong> < /p>
Мои данные сейчас везде: < /p>
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
Я предполагаю, что мои чеки неправильны Код>, если да, то верните 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;
});
Подробнее здесь: https://stackoverflow.com/questions/408 ... ple-values
Массив сортировки на основе нескольких значений [дублировать] ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение