Как сделать таблицу из входного массива
У меня есть форма ввода:
$ text =
A 2 1 B,
C 4 3 D,
А 3 1 С,
Д 2 1 А,
B 1 0 C,
Д 0 1 Б,
Д 2 1 С,
D 0 1 A;
Я хочу сделать таблицу из входных данных, чтобы не было дубликатов. Я хочу посчитать, сколько в матче и выиграть. Это таблица, которую я хочу:
|no| name | play | win |
|--|------|------|-----|
|1 | A | 4 | 3 |
|2 | B | 3 | 2 |
|3 | C | 4 | 1 |
|4 | D | 5 | 2 |
|--|------|------|-----|
У меня есть исходный код, чтобы взорвать в массив, но я не знаю, как рассчитать игру матча и выиграть:
$text = A 2 1 B, C 4 3 D, A 3 1 C, D 2 1 A, B 1 0 C, D 0 1 B, D 2 1 C, D 0 1 A;
$arr = explode(",",$text);
foreach($arr as $v){
preg_match_all('/(\D+)(\d+)/',$v,$match);
$team1=$match[1][0];
$team2=$match[1][1];
$result1=$match[2][0];
$result2=$match[2][1];
for ($i=0;$i<9;$i++){
echo"
<tr>$i</tr>
<tr>".$team1.$team2."</tr>
<tr>???</tr>
<tr>???</tr>";
}
}
Итак, каково решение, чтобы решить это? Пожалуйста помоги. Спасибо
2 ответа
$text = "A 2 1 B, C 4 3 D, A 3 1 C, D 2 1 A, B 1 0 C, D 0 1 B, D 2 1 C, D 0 1 A";
$newtext = str_replace(' ','',$text);
$arr = explode(",",$newtext);
$teams = array();
foreach($arr as $ch){
$t1 = substr($ch,0,1);
$v1 = substr($ch,1,1);
$v2 = substr($ch,2,1);
$t2 = substr($ch,3,1);
$teams[$t1]['plays']++;
$teams[$t2]['plays']++;
if($v1>$v2) {
$teams[$t1]['wins']++;
}
if($v2>$v1) {
$teams[$t2]['wins']++;
}
}
print_r($teams);
Я полагаю, нет шансов на результат ничьей?
Не печатайте результат в цикле.
Сначала вычислите play и win для каждого имени пользователя и сохраните его в многомерном массиве, затем во второй раз отформатируйте результат.
Вот путь (для первого шага):
$text = 'A 2 1 B, C 4 3 D, A 3 1 C, D 2 1 A, B 1 0 C, D 0 1 B, D 2 1 C, D 0 1 A';
$arr = explode(",",$text);
$result = array();
foreach($arr as $v){
$res = explode(' ', trim($v));
if (!isset($result[$res[0]])) $result[$res[0]]['play'] = $result[$res[0]]['win'] = 0;
if (!isset($result[$res[3]])) $result[$res[3]]['play'] = $result[$res[3]]['win'] = 0;
$result[$res[0]]['play']++;
$result[$res[3]]['play']++;
if ($res[1] > $res[2]) {
$result[$res[0]]['win']++;
} else {
$result[$res[3]]['win']++;
}
}
print_r($result);
Выход:
Array
(
[A] => Array
(
[win] => 3
[play] => 4
)
[B] => Array
(
[win] => 2
[play] => 3
)
[C] => Array
(
[win] => 1
[play] => 4
)
[D] => Array
(
[win] => 2
[play] => 5
)
)
Я позволю тебе сделать второй шаг.