Группа G Лиги чемпионов результаты футбольных соревнований:
РБ Лейпциг;Монако;ничья
ФК Порту; Бешикташ ЮК; поражение
Бешикташ ЮК; РБ Лейпциг; победа
AS Monaco;FC Porto;поражение
AS Monaco; Besiktas JK; поражение
РБ Лейпциг;Порту;победа
Бешикташ ЙК;Монако;ничья
«Порту»; «РБ Лейпциг»; победа
Бешикташ ЮК;Порту;ничья
«Монако»; «РБ Лейпциг»; поражение
«Порту»; «Монако»; победа
РБ Лейпциг; Бешикташ ЮК; поражение
Результат матча относится к первой команде в списке.
(Примеры:
Бешикташ ЮК; РБ Лейпциг; победа
AS Monaco FC;Besiktas JK;поражение
РБ Лейпциг; ФК Монако; ничья
Победа приносит команде 3 очка. Ничья приносит 1. Проигрыш приносит 0.
Результат должен быть упорядочен по пунктам, по убыванию. В случае ничьей команды располагаются в алфавитном порядке.
Вывод должен получиться таким:
Team | MP | W | D | L | P
Besiktas JK | 6 | 4 | 2 | 0 | 14
FC Porto | 6 | 3 | 1 | 2 | 10
RB Leipzig | 6 | 2 | 1 | 3 | 6
AS Monaco | 6 | 0 | 2 | 4 | 2
Однако я не могу получить результаты с точки зрения рейтинга и побед на выезде. Как я могу это сделать?
#tournament.txt
RB Leipzig;AS Monaco;draw
FC Porto;Besiktas JK;loss
Besiktas JK;RB Leipzig;win
AS Monaco;FC Porto;loss
AS Monaco;Besiktas JK;loss
RB Leipzig;FC Porto;win
Besiktas JK;AS Monaco;draw
FC Porto;RB Leipzig;win
Besiktas JK;FC Porto;draw
AS Monaco;RB Leipzig;loss
FC Porto;AS Monaco;win
RB Leipzig;Besiktas JK;loss
#tournament.php
<?php
$lines = file('tournament.txt');
foreach ($lines as $line) {
$parts = explode(';', $line);
$teams[$parts[0]][] = $parts[2];
$teams[$parts[1]][] = $parts[2];
}
uksort($teams, function ($a, $b) use ($teams) {
$aPoints = 0;
$bPoints = 0;
foreach ($teams[$a] as $result) {
if ($result == 'win') {
$aPoints += 3;
} elseif ($result == 'draw') {
$aPoints += 1;
}
}
foreach ($teams[$b] as $result) {
if ($result == 'win') {
$bPoints += 3;
} elseif ($result == 'draw') {
$bPoints += 1;
}
}
foreach ($teams[$a] as $result) {
if ($result == 'loss') {
$aPoints += 0;
$bPoints += 3;
}
}
foreach ($teams[$b] as $result) {
if ($result == 'loss') {
$aPoints += 3;
$bPoints += 0;
}
}
if ($aPoints == $bPoints) {
return $a <=> $b;
}
return $bPoints <=> $aPoints;
});
$fp = fopen('tournament.txt', 'w');
fwrite($fp, "Team | MP | W | D | L | P
");
foreach ($teams as $team => $results) {
$mp = count($results);
$w = 0;
$d = 0;
$l = 0;
foreach ($results as $result) {
if ($result == 'win') {
$w++;
} elseif ($result == 'draw') {
$d++;
} else {
$l++;
}
}
$p = $w * 3 + $d;
fwrite($fp, sprintf("%-30s| %2d | %2d | %2d | %2d | %2d
", $team, $mp, $w, $d, $l, $p));
}
fclose($fp);
?>
Почему вы используете текстовый файл, когда база данных сделала бы все это намного проще?
Пробовал работать с текстовым файлом. Да, я согласен: база данных сделает это намного проще. Тем не менее, мне пришлось попробовать. @Мартин
Я не могу проверить ваш код, потому что у меня версия PHP 5.6.36. Но с приведенным ниже кодом, который работает с PHP 5, я получаю результаты. В том числе и на выезде.
<style type = "text/css">
table { border-spacing: 0px; }
table th { padding: 5px; border: 1px solid black; }
table td { padding: 3px; border: 1px solid dimgrey; }
</style>
<?
// Initialisation
$infoList = array("MP","W","Wext","D","L","P");
// Open File
$lines = file('tournament.txt');
// For Each Line
foreach ($lines as $line)
{
$parts = explode(';', $line);
// Extraction
$teamA = $parts[0];
$teamB = $parts[1];
$score = $parts[2];
// Initialization
$teamList["$teamA"]["W"] = 0;
$teamList["$teamA"]["Wext"] = 0;
$teamList["$teamA"]["L"] = 0;
$teamList["$teamA"]["D"] = 0;
$teamList["$teamA"]["P"] = 0;
$teamList["$teamA"]["MP"] = (array_key_exists("MP", $teamList["$teamA"]))?bcadd($teamList["$teamA"]["MP"],1,0):1;
// Initialization
$teamList["$teamB"]["W"] = 0;
$teamList["$teamB"]["Wext"] = 0;
$teamList["$teamB"]["L"] = 0;
$teamList["$teamB"]["D"] = 0;
$teamList["$teamB"]["P"] = 0;
$teamList["$teamB"]["MP"] = (array_key_exists("MP", $teamList["$teamB"]))?bcadd($teamList["$teamB"]["MP"],1,0):1;
// Memorisation
$matchList[] = array("teamA"=>$teamA, "teamB"=>$teamB, "score"=>trim($score));
}
// End - For Each Line
// For Each Match
foreach($matchList as $matchKey => $matchValue)
{
// If Team A Win
if ($matchValue["score"]= = "win")
{
// Memorisation Team A
$teamList["".$matchValue["teamA"].""]["W"] = bcadd($teamList["".$matchValue["teamA"].""]["W"],1,0);
$teamList["".$matchValue["teamA"].""]["P"] = bcadd($teamList["".$matchValue["teamA"].""]["P"],3,0);
}
// If Team A Loss
if ($matchValue["score"]= = "loss")
{
// Memorisation Team B
$teamList["".$matchValue["teamB"].""]["W"] = bcadd($teamList["".$matchValue["teamB"].""]["W"],1,0);
$teamList["".$matchValue["teamB"].""]["Wext"] = bcadd($teamList["".$matchValue["teamB"].""]["Wext"],1,0);
$teamList["".$matchValue["teamB"].""]["P"] = bcadd($teamList["".$matchValue["teamB"].""]["P"],3,0);
}
// If Equality
if ($matchValue["score"]= = "draw")
{
// Memorisation Team A
$teamList["".$matchValue["teamA"].""]["D"] = bcadd($teamList["".$matchValue["teamA"].""]["D"],1,0);
$teamList["".$matchValue["teamA"].""]["P"] = bcadd($teamList["".$matchValue["teamA"].""]["P"],1,0);
// Memorisation Team B
$teamList["".$matchValue["teamB"].""]["D"] = bcadd($teamList["".$matchValue["teamB"].""]["D"],1,0);
$teamList["".$matchValue["teamB"].""]["P"] = bcadd($teamList["".$matchValue["teamB"].""]["P"],1,0);
}
}
// Fin - For Each Match
// -------- Display in HTML -------- //
echo "<table>";
echo "<tr>";
echo "<th></th>";
foreach($infoList as $infoKey => $infoValue) { echo "<th>".$infoValue."</th>"; }
echo "</tr>";
// For Each Team
foreach($teamList as $teamName => $teamValue)
{
echo "<tr>";
echo "<td>".$teamName."</td>";
// For Each Type Information
foreach($infoList as $infoKey => $infoValue)
{
echo "<td>".$teamValue["$infoValue"]."</td>";
}
// End - For Each Type Information
echo "</tr>";
}
// End - For Each Team
echo "</table>";
// --------------------------------- //
?>
Это может показаться немного громоздким, но позволяет иметь массив teamList со всей необходимой информацией.
Вы действительно должны перестать помогать другим, прежде чем помогать себе, используя PHP 7.4 или более позднюю версию. PHP 5 КОНЕЦ ЖИЗНИ почти 4 года назад!!! Обновлять!!!
Я не являюсь администратором сети, в которой я разрабатываю. Дома я на PHP 7.X. Но меня нет дома, и я воспользовался перерывом на работе, чтобы попытаться кому-то помочь. С той сетью, в которой я нахожусь и которую не администрирую.
И тот код, который вы показываете...? Что дает...? В чем проблема..?