各位新人大家好,我正在承担一项繁琐的任务,即更改游戏的一堆 ID 并将它们转换为字符串。正如你在这里看到的,我对 ID 29 执行了此操作,并将其变成 Sharpshooter。有没有更有效的方法让我做到这一点?或者我是否还要写 100 个以上的 if 案例? if ($rows[1] == 29) { $rows[1] = substr_replace("29","Sharpshooter",0); }下面是我的完整代码,我还添加了一些我正在讨论的示例。<?php/* Link DB */include_once 'config.php';/* Initialize Connection */$conn=sqlsrv_connect($serverName, $conn_array);if ($conn){}else{ die; }/* Prepare Statement Preparation */$sql = "SELECT TOP 25 G.CharacterName, G.JobCode, D.PVPWin, D.PVPLose, G.PvPExp, D.PVPGiveUpFROM PvPRanking as GINNER JOIN PVPScores as DON G.CharacterID = D.CharacterIDORDER BY RANK() OVER (ORDER BY TotalRank ASC ) ";/* Assign Parameter values. */$param1 = 1;$param2 = 2;// Array requirement for prepare statement.$procedure_params = array( array(&$param1, SQLSRV_PARAM_OUT), array(&$param2, SQLSRV_PARAM_OUT));/* The ACTUAL Prepare Statement */$stmt = sqlsrv_prepare( $conn, $sql, $procedure_params);/*Execute*/sqlsrv_execute($stmt);/* Variables */$autoincrement = 0;echo'<tr><th>Rank</th><th>Name</th><th>Class</th><th>Wins</th><!-- <th>Losses</th><th>Experience</th><th>Quit</th> --></tr>';// Rank # to increment itself. I.E 1,2,3,4,5,6 etc..while ($rows=sqlsrv_fetch_array($stmt)){ $autoincrement++;{ if ($rows[1] == 29) { $rows[1] = substr_replace("29","Sharpshooter",0); } if ($rows[1] == 30) { $rows[1] = substr_replace("30","Knight",0); } if ($rows[1] == 29) { $rows[1] = substr_replace("31","Dragon Slayer",0); }}// Echo will spit out the rows and the data.echo '<tr id=io><td> '.$autoincrement.' </td><b> <td style = "color:#AFA;"> '.$rows[0].' </td> </b><td> '.$rows[1].' </td><td> '.$rows[2].' </td><!-- <td> '.$rows[3].' </td><td> '.$rows[4].' </td><td> '.$rows[5].' </td> -->'; } ?></table>
1 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
创建您自己的翻译数组。如果该值不是数组中的键,则不要替换它。
$replacements = [
29 => 'Sharpshooter',
];
$rows[1] = $replacements[$rows[1]] ?? $rows[1];
假设您使用循环,则应在循环之前写入翻译数组。
或者,这一切都可以在带有CASE 块的sql 中执行。
最后,我建议您避免在每次调用查询时都执行此操作。 您只需将这些翻译添加为 PvPRanking 中的新列(或最合适的位置),并将它们添加到结果集中。换句话说,无论什么表都有JobCode
列为唯一值的值——该表都应该接收新列。
如果您没有包含这些唯一职位代码的表,那么您应该创建一个表并将该表连接到现有查询。这是最专业且可维护的解决方案,因为当您需要更新列表时,您只需要更新表而不是项目中潜在的多个文件。
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消