各位新人大家好,我正在承擔(dān)一項繁瑣的任務(wù),即更改游戲的一堆 ID 并將它們轉(zhuǎn)換為字符串。正如你在這里看到的,我對 ID 29 執(zhí)行了此操作,并將其變成 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條經(jīng)驗 獲得超7個贊
創(chuàng)建您自己的翻譯數(shù)組。如果該值不是數(shù)組中的鍵,則不要替換它。
$replacements = [
? ? 29 => 'Sharpshooter',
];
$rows[1] = $replacements[$rows[1]] ?? $rows[1];
假設(shè)您使用循環(huán),則應(yīng)在循環(huán)之前寫入翻譯數(shù)組。
或者,這一切都可以在帶有CASE 塊的sql 中執(zhí)行。
最后,我建議您避免在每次調(diào)用查詢時都執(zhí)行此操作。?您只需將這些翻譯添加為 PvPRanking 中的新列(或最合適的位置),并將它們添加到結(jié)果集中。換句話說,無論什么表都有JobCode
列為唯一值的值——該表都應(yīng)該接收新列。
如果您沒有包含這些唯一職位代碼的表,那么您應(yīng)該創(chuàng)建一個表并將該表連接到現(xiàn)有查詢。這是最專業(yè)且可維護的解決方案,因為當(dāng)您需要更新列表時,您只需要更新表而不是項目中潛在的多個文件。
- 1 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消