如何从输入数组中创建一个表

时间:2017-04-09 09:50:15

标签: php arrays preg-match-all

我有一些表单输入:
$ 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;

我想从输入中创建一个没有重复的表。我想算一下这场比赛的胜利数量。这是我想要的表格:

|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 个答案:

答案 0 :(得分:0)

$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);

我认为,抽签结果没有机会?

答案 1 :(得分:0)

不要在循环中打印结果。

首先计算每个用户名的游戏并获胜并存储在多维数组中,然后再次格式化结果。

这是一种方法(第一步):

$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
        )

)

我让你做第二步。

相关问题