Как сделать таблицу из входного массива

У меня есть форма ввода:
$ 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
        )

)

Я позволю тебе сделать второй шаг.

Другие вопросы по тегам