我得到以下代码找到熵:
if(preg_match("/а/i",$stroka)) { $vers[0] = $ver[0]*log($ver[0], 2); }
if(preg_match("/б/i",$stroka)) { $vers[1] = $ver[1]*log($ver[1], 2); }
if(preg_match("/в/i",$stroka)) { $vers[2] = $ver[2]*log($ver[2], 2); }
if(preg_match("/г/i",$stroka)) { $vers[3] = $ver[3]*log($ver[3], 2); }
if(preg_match("/д/i",$stroka)) { $vers[4] = $ver[4]*log($ver[4], 2); }
if(preg_match("/е/i",$stroka)) { $vers[5] = $ver[5]*log($ver[5], 2); }
if(preg_match("/ё/i",$stroka)) { $vers[6] = $ver[6]*log($ver[6], 2); }
if(preg_match("/ж/i",$stroka)) { $vers[7] = $ver[7]*log($ver[7], 2); }
if(preg_match("/з/i",$stroka)) { $vers[8] = $ver[8]*log($ver[8], 2); }
if(preg_match("/и/i",$stroka)) { $vers[9] = $ver[9]*log($ver[9], 2); }
if(preg_match("/й/i",$stroka)) { $vers[10] = $ver[10]*log($ver[10], 2); }
if(preg_match("/к/i",$stroka)) { $vers[11] = $ver[11]*log($ver[11], 2); }
if(preg_match("/л/i",$stroka)) { $vers[12] = $ver[12]*log($ver[12], 2); }
if(preg_match("/м/i",$stroka)) { $vers[13] = $ver[13]*log($ver[13], 2); }
这非常不舒服。我该如何优化代码?谢谢!
答案 0 :(得分:1)
最简单:
<?php
$chars = [
'а',
'б',
'в',
'г',
'д',
'е',
'ё',
'ж',
'з',
'и',
'й',
'к',
'л',
'м',
];
foreach($chars as $key => $char) {
if (preg_match("/{$char}/i", $stroka)) {
$vers[$key] = $ver[$key] * log($ver[$key], 2);
}
}