Массив сортировки на основе нескольких значений [дублировать]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Массив сортировки на основе нескольких значений [дублировать]

Сообщение Anonymous »

Мне нужно сортировать массив объектов на основе свойств объектов. В основном, если вы посмотрите на эту таблицу фиксации и заметите «Ливерпульский ФК» и «Манчестер Сити ФК», вы можете увидеть, что они имеют одинаковое количество очков, поэтому они упорядочены на основе других значений выше. < /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»