|
|
|
| Array (
[24] => Array ( [1] => 3 [2] => 0 [3] => 3 [4] => 3 [5] => 3 [6] => 3 )
[2] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 3 [5] => 3 [6] => 3 )
[25] => Array ( [1] => 0 [2] => 0 [3] => 3 [4] => 0 [5] => 1 [6] => 0 )
[16] => Array ( [1] => 3 [2] => 3 [3] => 1 [4] => 0 [5] => 0 [6] => 0 )
)
есть примерно такой массив - 24, 2, 25, 16 - ид команды, в подмассиве количество очков заработанное в 1, 2, 3, 4, 5 и 6 и т.д. турах. как можн вывести таблицу вроде этой?
| 1 тур | 2 тур | 3 тур |
Команда ----------------------------------------------
| Очки | Место | Очки | Место | Очки | Место |
------------------------------------------------------
24 | 3 | 1 | 3 | 2 | 6 | 2 |
2 | 0 | 3 | 0 | 3 | 1 | 4 |
25 | 0 | 4 | 0 | 4 | 3 | 3 |
16 | 3 | 2 | 6 | 1 | 7 | 1 |
------------------------------------------------------
|
| |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 15:37)
| | типа считать, сортировать и делать таблицу? | |
|
|
|
|
|
|
|
для: bronenos
(01.06.2007 в 15:50)
| | да:) я уже сделал таблицу
| 1 тур | 2 тур | 3 тур |
Команда ----------------------------------------------
| Очки | Место | Очки | Место | Очки | Место |
------------------------------------------------------
2 | 0 | | 0 | | 1 | |
16 | 3 | | 6 | | 7 | |
24 | 3 | | 3 | | 6 | |
25 | 0 | | 0 | | 3 | |
------------------------------------------------------
|
а вот как вывести места не знаю | |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 15:51)
| | для простоты можно команды с одинаковым кол-вом очков писать на одном месте.. или как получиться, в идеале считать кол-во забитых мячей (другой массив)...но это пока не обязательно | |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 18:08)
| | кто не подумав перенес тему из php в mysql???? тут вопрос с массивом, а не с бд | |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 15:37)
| | раз даже cheops не знает как это сделать (за 3 дня никто не предложил решение), наверное задача не решаемая:( | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 10:04)
| | Вы не написали правила, по которым раздаются места. Я, например, не понял, почему в 1-м туре команда 24 опередила команду 16, а команда 2 опередила команду 25. | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 11:10)
| | >Вы не написали правила, по которым раздаются места. Я, например, не понял, почему в 1-м туре команда 24 опередила команду 16, а команда 2 опередила команду 25.
чуть выше мое сообщение
автор: P@Sol (01.06.2007 в 18:08) письмо автору
для простоты можно команды с одинаковым кол-вом очков писать на одном месте.. или как получиться, в идеале считать кол-во забитых мячей (другой массив)...но это пока не обязательно
|
| |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 11:13)
| | и Trianon не смог помочь:( | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 13:19)
| | Я, в отличие от cheops'а, не люблю решать нечетко поставленные задачи :)
Так что не не смог, а скорее - не захотел :) | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 13:36)
| | для четкости: узнать место команды занимаемое после каждого тура. При равенстве очков распределять места по командам в алфавитном порядке.
кол-во очков набранное командами хранится в массиве
Array (
[24] => Array ( [1] => 3 [2] => 0 [3] => 3 [4] => 3 [5] => 3 [6] => 3 )
[2] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 3 [5] => 3 [6] => 3 )
[25] => Array ( [1] => 0 [2] => 0 [3] => 3 [4] => 0 [5] => 1 [6] => 0 )
[16] => Array ( [1] => 3 [2] => 3 [3] => 1 [4] => 0 [5] => 0 [6] => 0 )
)
так четче? | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 13:41)
| | Да, безусловно. Сейчас поломаю.. | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 13:47)
| |
<?
$src = Array (
24 => Array ( 1 => 3, 2 => 0 ,3 => 3 ,4 => 3 ,5 => 3 ,6 => 3 )
,2 => Array ( 1 => 0 ,2 => 0 ,3 => 1 ,4 => 3 ,5 => 3 ,6 => 3 )
,25 => Array ( 1 => 0 ,2 => 0 ,3 => 3 ,4 => 0 ,5 => 1 ,6 => 0 )
,16 => Array ( 1 => 3 ,2 => 3 ,3 => 1 ,4 => 0 ,5 => 0 ,6 => 0 )
);
$commands = array_keys($src);
//print_r($commands);
$tours = array();
foreach($src as $cmd => $res)
{
$acm[$cmd] = 0;
foreach($res as $tour => $point)
$tours[$tour]['points'][$cmd]=$point;
}
foreach($tours as $tour => $res)
{
foreach($res['points'] as $cmd => $point)
{
$acm[$cmd] += $point;
$tours[$tour]['points'][$cmd] = $acm[$cmd];
}
asort($acm);
$n = 0;
foreach($acm as $cmd =>$point)
$ord[$cmd]=++$n;
$tours[$tour]['rank']=$ord;
}
{
echo "<table border=1><tr><th> Command </th>";
foreach($tours as $tour => $res)
echo "<th> Tour $tour </th><th> Rank </th>";
echo "</tr>\r\n";
}
foreach($commands as $cmd)
{
echo "<tr><th> $cmd </th>";
foreach($tours as $tour => $res)
{
$points = $res['points'][$cmd];
$rank = $res['rank'][$cmd];
echo "<td> $points </td><td> $rank </td>\r\n";
}
echo "</tr>\r\n";
}
{
echo "</table>\r\n";
}
//print_r($tours);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 14:23)
| | не хило... круто, круто... спасибо буду пробовать | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 14:23)
| | работает, тольо arsort($acm); надо использовать:) | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 17:58)
| | должен же я был оставить что-нибудь на самостоятельную проработку :) | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 18:25)
| | возможно привязку к забитым мячам сделать? весь вечер просидел с этой задачкой:( | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 21:20)
| | были б данные в массиве. | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 21:22)
| | у Вас время есть? может я изначально не правильным путем пошел? может задачу с самого начало рассказать? | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 21:32)
| | >у Вас время есть?
конечно же нет! :) | |
|
|
|
|
|
|
|
для: Trianon
(04.06.2007 в 14:23)
| | сортировка по местам странная:) не по алфавиту получилось, но все равно круто... счас хочу еще придумать как сделать сортировку мест сначало по забитым мячам, а потом по победам..если что я к вам | |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 15:37)
| | результаты хранятся в res.txt
#тур,счет,ид1,ид2
1:2-0:24:2
1:1-2:25:16
1:0-2:12:19
1:1-0:11:21
1:0-0:3:20
1:0-2:4:22
1:1-0:9:0
1:2-0:17:27
###
2:2-1:0:24
2:0-3:12:22
2:1-3:25:20
2:0-3:21:9
2:2-0:17:2
2:0-1:27:3
2:1-0:16:4
2:0-1:19:11
###
и т.д.
|
вот код обработки:
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$stats = file("res.txt");
foreach($stats as $stat)
{
if ($stat[0] == "#")
continue;
$team1s=0;
$team2s=0;
$teamst = explode(":",$stat);
$teamst1 = explode(";",$teamst[2]);
$teamst2 = explode(";",$teamst[3]);
$goal = explode("-",$teamst[1]);
if ($goal[0] > $goal[1])
{
$p1 = 3;
$p2 = 0;
}
else if ($goal[0] < $goal[1])
{
$p1 = 0;
$p2 = 3;
}
else if ($goal[0] == $goal[1])
{
$p1 = 1;
$p2 = 1;
}
$teamsum2["$teamst1[0]"][$teamst[0]] = $p1;
$teamsum2["$teamst2[0]"][$teamst[0]] = $p2;
}
$commands = array_keys($teamsum2);
sort($commands);
$tours = array();
foreach($teamsum2 as $cmd => $res)
{
$acm[$cmd] = 0;
foreach($res as $tour => $point)
$tours[$tour]['points'][$cmd]=$point;
}
foreach($tours as $tour => $res)
{
foreach($res['points'] as $cmd => $point)
{
$acm[$cmd] += $point;
$tours[$tour]['points'][$cmd] = $acm[$cmd];
}
arsort($acm);
$n = 0;
foreach($acm as $cmd =>$point)
$ord[$cmd]=++$n;
$tours[$tour]['rank']=$ord;
}
{
echo "<table border=1><tr><th> Command </th>";
foreach($tours as $tour => $res)
echo "<th> Tour $tour </th><th> Rank </th>";
echo "</tr>\r\n";
}
foreach($commands as $cmd)
{
echo "<tr><td> $team[$cmd] </td>";
foreach($tours as $tour => $res)
{
$points = $res['points'][$cmd];
$rank = $res['rank'][$cmd];
echo "<td> $points </td><td> $rank </td>\r\n";
}
echo "</tr>\r\n";
}
{
echo "</table>\r\n";
}
?>
|
в итоге надо получить таблицу, где указаны места команд по турам, при равенстве очков учитывать разницу мяцей, а при равенстве разницы учитывать кол-во забитых мячей.
я думал будет просто учесть мячи, когда уже будет хоть как то выводить...оказалось, я не могу этого сделать | |
|
|
|
|
|
|
|
для: P@Sol
(05.06.2007 в 10:56)
| | каков смысл вот этих разбиений?
$teamst1 = explode(";",$teamst[2]);
$teamst2 = explode(";",$teamst[3]); | |
|
|
|
|
|
|
|
для: Trianon
(05.06.2007 в 11:59)
| | краснея, забыл удалить, это от другого скрипта осталось | |
|
|
|
|
|
|
|
для: P@Sol
(05.06.2007 в 12:18)
| | Делал я такое, используйте базу данных, это ОЧЕНЬ облегчает сортировку и вывод всякой разной статистики.
Потребуется всего одна таблица в базе (и одна будет создаваться как "временная", или 2 обычных), но это еще без учета таблицы для календаря (про который вы не упоминали).
Еще надо использовать кэширование страниц на сервере, так как итоговая таблица изменяется только при очередном матче, и нет смысла пересчитывать ее при каждом запросе.
Когда вам понадобится сделать статистику по КАЖДОЙ команде, по итогам чемпионата, тура итп, вы поймете, что использование файла для хранения данных провальная затея :) | |
|
|
|
|
|
|
|
для: Disable
(05.06.2007 в 14:41)
| | тогда придеться писать скрипт перегона из тхт в мускул:) мне файлы присылают разные люди:(
привидите структуру вашей таблица, пожалуйста | |
|
|
|
|
|
|
|
для: P@Sol
(05.06.2007 в 15:51)
| | $q[0]="CREATE TABLE football (tur int(2) not null,
_1 int(2) not null,
_2 int(2) not null,
st_1 enum('0','1'),
st_2 enum('0','1'),
in_1 int(2),
in_2 int(2),
out_1 int(2),
out_2 int(2),
diff_1 int(2),
diff_2 int(2),
win_1 int(2),
win_2 int(2),
lose_1 int(2),
lose_2 int(2),
tauth_1 int(2),
tauth_2 int(2),
point_1 int(2),
point_2 int(2),
pos_1 int(2),
pos_2 int(2),
pass enum('0','1'),
date int(10) ) type=myisam ";
$q[1]="CREATE TABLE tur_tmp ( _c int(2) not null,
matches int(2),
in_g int(2),
out_g int(2),
diff int(2),
win int(2),
lose int(2),
tauth int(2),
point int(2) ) type=myisam ";
она получилась на первый взгляд избыточной, но еще до конца не определились что выводить, а что нет
st_1 это дома/в гостях
pass enum('0','1'), это для перенесенных матчей флаг
после матча просто заполняется таблица 1, и строится таблица 2 (по результатам сортировки второй таблицы выводятся места). | |
|
|
|
|
|
|
|
для: Disable
(05.06.2007 в 17:11)
| | не до конца понял для чего какое поле:( можете для каждого комментарий дать? | |
|
|
|
|
|
|
|
для: P@Sol
(05.06.2007 в 22:44)
| | все забивается для ОДНОГО матча
_1 int(2) not null, это ид первой команды
_2 int(2) not null, это ид второй команды
st_1 enum('0','1'), это дома/в гостях для первой команды (0 это дома, команда первая)
st_2 enum('0','1'), это дома/в гостях для второй команды
in_1 int(2), это сколько забила первая команда
in_2 int(2), это сколько забила вторая команда
out_1 int(2), это сколько проопустила ревая команда
out_2 int(2),
diff_1 int(2), это разница мячей для первой команда
diff_2 int(2),
win_1 int(2), это победа первой команды (0 или 1), не знаю почему не через enum :)
win_2 int(2),
lose_1 int(2), это поражение второй команды (0 или 1)
lose_2 int(2),
tauth_1 int(2), это ничья первой команды (0 или 1)
tauth_2 int(2),
point_1 int(2), это очки первой команды (0 , 1 или 3)
point_2 int(2),
pos_1 int(2), это место первой команды (потом пересчитывается)
pos_2 int(2),
pass enum('0','1'), это флаг перенесенного матча
date int(10) ) type=myisam ";
потом выводится временная таблица, в которой очки, победы итп суммируются по результатам матчей, для выяснения позиций временная таблица сортируется | |
|
|
|
|
|
|
|
для: P@Sol
(01.06.2007 в 15:37)
| | соединил оба способа:)
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$dblocation = "localhost";
$dbname = "vsol";
$dbuser = "root";
$dbpasswd = "";
// Устанавливаем соединение с сервером базы данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
puterror("В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.");
}
// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbcnx))
{
puterror("В настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно.");
}
@mysql_query("SET NAMES 'cp1251'");
$query = "DROP TABLE games";
$drop = mysql_query($query);
$query = "CREATE TABLE `games` (
`id` TINYINT( 2 ) UNSIGNED NOT NULL ,
`matches` TINYINT( 2 ) NOT NULL ,
`in_g` TINYINT( 2 ) NOT NULL ,
`out_g` TINYINT( 2 ) NOT NULL ,
`diff` TINYINT( 2 ) NOT NULL ,
`win` TINYINT( 2 ) NOT NULL ,
`lose` TINYINT( 2 ) NOT NULL ,
`draw` TINYINT( 2 ) NOT NULL ,
`point` TINYINT( 2 ) NOT NULL ,
PRIMARY KEY ( `id` )
)";
$create = mysql_query($query);
for ($i=0; $i<33; $i++)
{
$query = "insert into `games` values ('$i','','','','','','','','')";
$sel = mysql_query($query);
}
$stats = file("match.txt");
foreach($stats as $stat)
{
$n=0;
$i=0;
if ($stat == "###\r\n") {
$query = "Select `id`, `matches`, `point` from `games` order by `point` DESC, `matches`, `diff` DESC, `in_g` DESC, `win` DESC, `id`";
$sel = mysql_query($query);
if($sel)
{
while($tbl = mysql_fetch_array($sel))
if ($tbl['matches']>0)
{
$tours[$tbl['matches']]['points'][$tbl['id']] = $tbl['point'];
$ord[$tbl['id']]=++$n;
$tours[$tbl['matches']]['rank'][$tbl['id']] = $ord[$tbl['id']];
if(!in_array($tbl['id'],$commands))
{
$commands[$i] = $tbl['id'];
$i++;
}
}
} else echo "Ошибка при выборке новых значений";
}
if ($stat[0] == "#")
continue;
/* else if ($stat[0] == "3")
break; */
$team1s=0;
$team2s=0;
$teamst = explode(":",$stat);
$teamst1 = explode(";",$teamst[2]);
$teamst2 = explode(";",$teamst[3]);
$goal = explode("-",$teamst[1]);
if ($goal[0] > $goal[1])
{
$p1 = 3;
$p2 = 0;
$w1 = $l2 = 1;
$d1 = $d2 = 0;
$l1 = $w2 = 0;
}
else if ($goal[0] < $goal[1])
{
$p1 = 0;
$p2 = 3;
$w1 = $l2 = 0;
$d1 = $d2 = 0;
$l1 = $w2 = 1;
}
else if ($goal[0] == $goal[1])
{
$p1 = 1;
$p2 = 1;
$w1 = $l2 = 0;
$d1 = $d2 = 1;
$l1 = $w2 = 0;
}
$diff1 = $goal[0]-$goal[1];
$diff2 = $goal[1]-$goal[0];
$query = "Select * from `games` where `id` = $teamst1[0]";
$sel = mysql_query($query);
if($sel)
{
while($tbl = mysql_fetch_array($sel))
{
$matches1 = $tbl['matches'] + 1;
$in_g1 = $tbl['in_g'] + $goal[0];
$out_g1 = $tbl['out_g'] + $goal[1];
$diff1 = $tbl['diff'] + $diff1;
$win1 = $tbl['win'] + $w1;
$lose1 = $tbl['lose'] + $l1;
$draw1 = $tbl['draw'] + $d1;
$point1 = $tbl['point'] + $p1;
}
} else echo "Ошибка при выборке предыдущих значений";
$query = "Select * from `games` where `id` = $teamst2[0]";
$sel = mysql_query($query);
if($sel)
{
while($tbl = mysql_fetch_array($sel))
{
$matches2 = $tbl['matches'] + 1;
$in_g2 = $tbl['in_g'] + $goal[1];
$out_g2 = $tbl['out_g'] + $goal[2];
$diff2 = $tbl['diff'] + $diff2;
$win2 = $tbl['win'] + $w2;
$lose2 = $tbl['lose'] + $l2;
$draw2 = $tbl['draw'] + $d2;
$point2 = $tbl['point'] + $p2;
}
} else echo "Ошибка при выборке предыдущих значений";
$query = "UPDATE `games` SET `matches` = '$matches1',
`in_g` = '$in_g1',
`out_g` = '$out_g1',
`diff` = '$diff1',
`win` = '$win1',
`lose` = '$lose1',
`draw` = '$draw1',
`point` = '$point1'
where `id` = '$teamst1[0]'";
$up1 = mysql_query($query);
//echo $query."<br>";
$query = "UPDATE `games` SET `matches` = '$matches2',
`in_g` = '$in_g2',
`out_g` = '$out_g2',
`diff` = '$diff2',
`win` = '$win2',
`lose` = '$lose2',
`draw` = '$draw2',
`point` = '$point2'
where `id` = '$teamst2[0]'";
$up2 = mysql_query($query);
//echo $query."<br>";
}
{
echo "<table border=1><tr><th> Command </th>";
foreach($tours as $tour => $res)
echo "<th> Tour $tour </th><th> Rank </th>";
echo "</tr>\r\n";
}
sort($commands);
foreach($commands as $cmd)
{
echo "<tr><td> $cmd</td>";
foreach($tours as $tour => $res)
{
$points = $res['points'][$cmd];
$rank = $res['rank'][$cmd];
echo "<td> $points </td><td> $rank </td>\r\n";
}
echo "</tr>\r\n";
}
{
echo "</table>\r\n";
}
?>
|
осталось два вопроса
1: приходится создавать и удалять таблицу, буду исправлять
2: как инициализировать массив $commands, а то вначале выводится ошикбка Warning: in_array(): Wrong datatype for second argument? | |
|
|
|
|
|
|
|
для: P@Sol
(06.06.2007 в 16:05)
| | сам не догодался как можно решить оба этих вопроса. жду помощи | |
|
|
|
|
|
|
|
для: P@Sol
(07.06.2007 в 12:23)
| | 2) in_array() принимает в качестве второго аргумента массив, поэтому следует проверять - является ли он массивом
<?php
if(!empty($commands) && is_array($commands))
if(!in_array($tbl['id'],$commands))
{
$commands[$i] = $tbl['id'];
$i++;
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.06.2007 в 13:13)
| | так изначально он полюбому будет пустой:( вот когда он первый раз попадает в эту строку ошибка и возникает, при последующих заходах ошибки уже нет, что логично. Вот и возник у меня вопрос как инициализировать вначале этот массив | |
|
|
|
|
|
|
|
для: P@Sol
(07.06.2007 в 13:26)
| | если Вы вот эту фразу
итоге надо получить таблицу, где указаны места команд по турам, при равенстве очков учитывать разницу мяцей, а при равенстве разницы учитывать кол-во забитых мячей.
|
раскроете более подробно, можно будет над этим подумать.
Что такое разница мячей я еще понять могу,
но что значит "учитывать кол-во забитых мячей" и чем оно отличается от разницы - для меня - нефутболиста в общем-то - не доходит.
Равно как непонятно, чем игра отличается от тура, а если отличается - за игру или за тур учитывать. | |
|
|
|
|
|
|
|
для: Trianon
(07.06.2007 в 13:58)
| | получиться должно вот это
sql запрос в данном случае
$query = "Select * from table order by `point` DESC, `matches`, `diff` DESC, `in_g` DESC, `win` DESC, `id`";
|
разница мячей = забитые мячи - пропущенные
в туре проходит 8 игр, но для каждой команды 1 тур = 1 игра
в массивах такое сделать мне кажется очень-очень сложно, если не возможно | |
|
|
|
|
|
|
|
для: P@Sol
(07.06.2007 в 16:53)
| |
<?
$rep = '1:2-0:24:2
1:1-2:25:16
1:0-2:12:19
1:1-0:11:21
1:0-0:3:20
1:0-2:4:22
1:1-0:9:0
1:2-0:17:27
###
2:2-1:0:24
2:0-3:12:22
2:1-3:25:20
2:0-3:21:9
2:2-0:17:2
2:0-1:27:3
2:1-0:16:4
2:0-1:19:11
###';
//$stats = file("res.txt");
$stats = explode("\r\n", $rep);
foreach($stats as $stat)
{
$stat = trim($stat);
if ($stat[0] == "#")
continue;
$team1s=0;
$team2s=0;
$teamst = explode(":",$stat);
$teamst1 = $teamst[2];
$teamst2 = $teamst[3];
$goal = explode("-",$teamst[1]);
$goal[0] = intval($goal[0]);
$goal[1] = intval($goal[1]);
if ($goal[0] > $goal[1])
{
$p1 = 3;
$p2 = 0;
}
else if ($goal[0] < $goal[1])
{
$p1 = 0;
$p2 = 3;
}
else if ($goal[0] == $goal[1])
{
$p1 = 1;
$p2 = 1;
}
$tours[$teamst[0]]['points'][$teamst1] = $p1;
$tours[$teamst[0]]['points'][$teamst2] = $p2;
$tours[$teamst[0]]['goals'][$teamst1] = $goal[0];
$tours[$teamst[0]]['goals'][$teamst2] = $goal[1];
$tours[$teamst[0]]['diffs'][$teamst1] = $goal[0]-$goal[1];
$tours[$teamst[0]]['diffs'][$teamst2] = $goal[1]-$goal[0];
$src[$teamst1][$teamst[0]] = $p1;
$src[$teamst2][$teamst[0]] = $p2;
}
$commands = array_keys($src);
//print_r($commands);
//$tours = array();
foreach($src as $cmd => $res)
{
$acm[$cmd] = array('points'=>0, 'diffs'=>0, 'goals'=>0);
}
function compare_rank($a, $b)
{
return (($a['points']- $b['points']) ? ($a['points'] - $b['points']) :
(($a['diffs']- $b['diffs']) ? ($a['diffs'] - $b['diffs']) :
(($a['goals']- $b['goals']) ? ($a['goals'] - $b['goals']) :
0)));
}
foreach($tours as $tour => $res)
{
foreach($res['points'] as $cmd => $point)
{
$acm[$cmd]['points'] += $point;
$acm[$cmd]['diffs'] += $res['diffs'][$cmd];
$acm[$cmd]['goals'] += $res['goals'][$cmd];
$tours[$tour]['points'][$cmd] = $acm[$cmd];
}
uasort($acm, 'compare_rank');
$n = 0;
foreach($acm as $cmd =>$point)
$ord[$cmd]=++$n;
$tours[$tour]['rank']=$ord;
}
{
echo "<table border=1><tr><th> Command </th>";
foreach($tours as $tour => $res)
echo "<th> Tour $tour </th><th> Rank </th>";
echo "</tr>\r\n";
}
foreach($commands as $cmd)
{
echo "<tr><th> $cmd </th>";
foreach($tours as $tour => $res)
{
$points = $res['points'][$cmd]['points'];
$rank = $res['rank'][$cmd];
echo "<td> $points </td><td> $rank </td>\r\n";
}
echo "</tr>\r\n";
}
{
echo "</table>\r\n";
}
//print_r($tours);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.06.2007 в 18:19)
| | ты гений:) | |
|
|
|
|
|
|
|
для: Trianon
(07.06.2007 в 18:19)
| | пользовательскую функцию переписал:)
function compare_rank($a, $b)
{
return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) :
(($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) :
(($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) :
0)));
}
|
а как еще добавить если 'points, 'diffs' и 'goals' равны, то сортировать по ИД? | |
|
|
|
|
|
|
|
для: P@Sol
(18.06.2007 в 16:58)
| | Вы чего?
function compare_rank($a, $b)
{
return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) :
(($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) :
(($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) :
(($b['id']- $a['id']) ? ($b['id'] - $a['id']) :
0))));
}
$acm[$cmd]['id'] = 0+$cmd;
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.06.2007 в 18:19)
| | еще добавил строки
$tours[$teamst[0]]['diffs'][$teamst1] = $goal[0]-$goal[1];
$tours[$teamst[0]]['diffs'][$teamst2] = $goal[1]-$goal[0];
$tours[$teamst[0]]['win'][$teamst1] = $w1;
$tours[$teamst[0]]['win'][$teamst2] = $w2;
....
function compare_rank($a, $b)
{
return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) :
(($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) :
(($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) :
(($b['win']- $a['win']) ? ($b['win'] - $a['win']) : //74 строка
(($a['id']- $b['id']) ? ($a['id'] - $b['id']) :
0)))));
}
....
$acm[$cmd]['id'] = 0+$cmd;
$acm[$cmd]['win'] += $res['win'][$cmd]; //108 строка
|
почему-то вылазит ошибка Notice: Undefined index: win in z:\home\localhost\www\index6.php on line 108 | |
|
|
|
|
|
|
|
для: P@Sol
(18.06.2007 в 17:16)
| | разобрался:) | |
|
|
|
|