0

我只是在学习使用 php,我一直在研究这个效率不高的代码,因为它很长,我希望它更加自动化。这个想法是生成一个包含 2 个列的表,一个包含用户名,另一个包含每个用户的分数。正如您可能想象的那样,分数基于使用同一用户的其他变量的函数。我的目标是只需为每个用户设置一个变量,并在表的末尾自动创建一个新行。

<?php
$array1['AAA'] = "aaa"; ## I'm suposed to only set the values for array1, the rest
$array1['BBB'] = "bbb"; ## should be automatic
$array1['ETC'] = "etc";

function getscore($array1){
   ## some code
   return $score;
   };

$score['AAA'] = getscore($array1['AAA']);
$score['BBB'] = getscore($array1['BBB']);
$score['ETC'] = getscore($array1['ETC']);
?>
<-- Here comes the HTML table --->
<html>
<body>
<table> 
<thead> 
  <tr> 
      <th>User</th> 
      <th>Score</th> 
  </tr> 
</thead> 
<tbody> 
  <tr> 
      <td>AAA</td> <-- user name should be set automaticlly too -->
      <td><?php echo $score['AAA'] ?></td> 
  </tr> 
  <tr> 
      <td>BBB</td> 
      <td><?php echo $score['BBB'] ?></td> 
  </tr> 
  <tr> 
      <td>ETC</td> 
      <td><?php echo $winrate['ETC'] ?></td> 
  </tr>
</tbody>
</table>
</body>
</html>

欢迎任何帮助!

4

2 回答 2

0

这有点干净,使用foreachand printf

<?php

$array1 = array(
  ['AAA'] => "aaa",
  ['BBB'] => "bbb",
  ['ETC'] => "etc"
);

function getscore($foo) {
   ## some code
   $score = rand(1,100); // for example
   return $score;
};

foreach ($array1 as $key => $value) {
  $score[$key] = getscore($array1[$key]);
}

$fmt='<tr>
      <td>%s</td>
      <td>%s</td>
  </tr>';

?>
<-- Here comes the HTML table --->
<html>
<body>
<table><thead>
  <tr>
      <th>User</th>
      <th>Score</th>
  </tr></thead><tbody><?php

foreach ($array1 as $key => $value) {
  printf($fmt, $key, $score[$key]);
}

?>
</tbody></table>
</body>
</html>

另外,我会注意到您似乎没有使用$array1任何地方的值。另外,我不确定$winrate您的代码中有什么,所以我忽略了它。

于 2012-09-14T11:22:14.900 回答
0
$outputHtml = ''
foreach( $array1 as $key => $val ) 
{
    $outputHtml .= "<tr> ";
    $outputHtml .= "      <td>$key</td>";
    $outputHtml .= "      <td>".getscore($array1[$key]);."</td>";
    $outputHtml .= "  </tr>";
}

然后$outputHtml将是 html 内容,其中包含您要显示的所有行

于 2012-09-14T04:47:16.087 回答