基于函数创建一个新数组

时间:2012-09-14 02:32:18

标签: php html5

我只是在试图使用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>

欢迎任何帮助!

2 个答案:

答案 0 :(得分:0)

$outputHtml = ''
foreach( $array1 as $key => $val ) 
{
    $outputHtml .= "<tr> ";
    $outputHtml .= "      <td>$key</td>";
    $outputHtml .= "      <td>".getscore($array1[$key]);."</td>";
    $outputHtml .= "  </tr>";
}

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

答案 1 :(得分:0)

使用foreachprintf

,这有点干净
<?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,所以我忽略了它。