- 你可以在下面找到完整的代码。*
我有两个数组。第一个数组看起来像这样:
// Replace ID_CHAT_ with readable value
$replacements = array(
'ID_CHAT_ATTACK/DEFEND' => 'Attack/Defend!',
'ID_CHAT_REQUEST_MEDIC' => 'Request Medic!',
'ID_CHAT_REQUEST_AMMO' => 'Request Ammo!',
'ID_CHAT_REQUEST_RIDE' => 'Request Ride!',
'ID_CHAT_NEGATIVE' => 'Negative!',
'ID_CHAT_SORRY' => 'Sorry!',
'ID_CHAT_GOGOGO' => 'Go Go Go!',
'ID_CHAT_AFFIRMATIVE' => 'Affirmative!',
'ID_CHAT_REQUEST_ORDER' => 'Request Order!',
'ID_CHAT_THANKS' => 'Thanks!',
);
第二个数组是这样的:(来自mysqli结果集)
[31] => Array
(
[ID] => 2179
[logDate] => 2016-05-12 22:10:38
[ServerID] => 2
[logSubset] => Team
[logSoldierName] => OPTIMUS-GOLD
[logMessage] => ID_CHAT_REQUEST_AMMO
[logPlayerID] => 1071
)
[32] => Array
(
[ID] => 2178
[logDate] => 2016-05-12 22:10:34
[ServerID] => 2
[logSubset] => Team
[logSoldierName] => CaptaineGamingFR
[logMessage] => ID_CHAT_REQUEST_RIDE
[logPlayerID] => 1531
)
[33] => Array
(
[ID] => 2177
[logDate] => 2016-05-12 22:10:27
[ServerID] => 2
[logSubset] => Team
[logSoldierName] => CaptaineGamingFR
[logMessage] => ID_CHAT_GOGOGO
[logPlayerID] => 1531
)
[34] => Array
(
[ID] => 2176
[logDate] => 2016-05-12 22:10:11
[ServerID] => 2
[logSubset] => Global
[logSoldierName] => CaptaineGamingFR
[logMessage] => cool des francais
[logPlayerID] => 1531
)
[35] => Array
(
[ID] => 2175
[logDate] => 2016-05-12 22:10:08
[ServerID] => 2
[logSubset] => Global
[logSoldierName] => Minotaures
[logMessage] => et sa s affiche sur tt les serveur
[logPlayerID] => 1337
)
我想用对应的$replacements
值替换第二个array中的logMessage值。
它应该是什么样子:
[logMessage] => **ID_CHAT_REQUEST_AMMO**
一定是
[logMessage] => Request Ammo!
当前代码:
public function serverChatlog( $serverID = null ) {
// Replace ID_CHAT_ with readable value
$replacements = array(
'ID_CHAT_ATTACK/DEFEND' => 'Attack/Defend!',
'ID_CHAT_REQUEST_MEDIC' => 'Request Medic!',
'ID_CHAT_REQUEST_AMMO' => 'Request Ammo!',
'ID_CHAT_REQUEST_RIDE' => 'Request Ride!',
'ID_CHAT_NEGATIVE' => 'Negative!',
'ID_CHAT_SORRY' => 'Sorry!',
'ID_CHAT_GOGOGO' => 'Go Go Go!',
'ID_CHAT_AFFIRMATIVE' => 'Affirmative!',
'ID_CHAT_REQUEST_ORDER' => 'Request Order!',
'ID_CHAT_THANKS' => 'Thanks!',
);
// Create an array.
$output = array();
// Query the database
$query = $this->connectDB()->query( 'SELECT * FROM `tbl_chatlog` ORDER BY `ID` DESC' );
$result = $query->num_rows;
$array = $query->fetch_all(MYSQLI_ASSOC);
// Return the results in JSON format
if( $result > 0 ) {
$output = json_encode( $array, JSON_PRETTY_PRINT );
return json_decode( $output, true );
} else {
return false;
}
}
4条答案
按热度按时间svgewumm1#
获取
$replacements
的键值,如果找到$array
中的键值,它将用$replacement
的值替换该值。编辑
所以让我把同样的逻辑应用到你的数组的其余部分。假设我们有下面的数组(我从你上面的问题中提取了这个):
现在我可以用下面的代码迭代这个数组:
这将输出以下内容:
9rbhqvlz2#
也许这有帮助。它迭代日志数组,检查logMessage元素的值并替换它。
33qvvth13#
如果你在你的函数中硬编码
$replacements
,那么你可以直接将它构建到你的SQL中。让
fetch_all()
返回一个JSON编码的数组(即使它是空的)。尽可能在返回值中保持一致的数据类型是一个好主意。看看你的方法变得多么干净、专业、直接和可读。
要享受更大的灵活性,创建一个新的数据库表来包含翻译,并在
logMessage
列上加入该数据。这样,您可以维护/扩展您的翻译数据,而无需接触您的代码库-- WIN!q5iwbnjs4#
我希望这对你有帮助。搜索数组的关键字,如果关键字存在,那么就用它替换。