Мне нужно сортировать массив объектов на основе свойств объектов. В основном, если вы посмотрите на эту таблицу фиксации и заметите «Ливерпульский ФК» и «Манчестер Сити ФК», вы можете увидеть, что они имеют одинаковое количество очков, поэтому они упорядочены на основе других значений выше. < /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
Кемеровские программисты php общаются здесь
-
Anonymous
1739879748
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;
});
Подробнее здесь: [url]https://stackoverflow.com/questions/40833766/sort-array-based-on-multiple-values[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия