我有一些表单输入:
$ 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>";
}
}
那么,解决它的解决方案是什么?请帮忙。感谢
答案 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
)
)
我让你做第二步。