PHP:将单词/字符串转换为数字并添加它们

时间:2014-04-05 06:52:29

标签: php sum add

  1. 我有一个表单,我想在其中键入任意单词组合,然后提交。
  2. 假设我输入“ bababa ba
  3. 这必须变为“ 2 + 1 + 2 + 1 + 2 + 1 + 2 + 1 = 12
  4. Folloed by: 12 = 1 + 2 = 3 答案总是必须在10以下分解.3是我想看到的唯一答案。
  5. 一个初学者,几周来我一直在忙着$let_arr = ["a" => "1", "b" => "2",];str_splitexplode以及其他一切。无法理解。

    可以帮助我的Ayone?也许这些见解会对我有所帮助。

2 个答案:

答案 0 :(得分:1)

字母实际上是数字 - 它们具有序数ASCII值,可以由ord()检索。例如,ord('a')为97.因此,您不需要数组作为查找表。

首先,让我们从字符串中删除所有非字母字符,并将所有字符转换为小写字母(从ord('a') != ord('A')开始):

$str = 'bababa ba';
$letters = preg_replace('~[^a-z]~i', '', $str); // remove all non-alpha characters
$letters = strtolower($letters); // convert to lowercase

现在让我们将单个字母加起来:

$sum = 0;
for ($i = 0; $i < strlen($letters); $i++)
{
    $sum += ord($letters[$i]) - 96; // 96 == ord('a') - 1
}

最后,我们必须得到数字总和:

$ds = 0;
while ($sum != 0)
{
    $ds += $sum % 10;         // extract and add last digit
    $sum = (int) ($sum / 10); // remove last digit
}

现在,$ds将包含您的结果。我希望,这就是你要求的。

答案 1 :(得分:0)

要找出a = 1和b = 2并且...这个简单的形式/功能: 你可以尝试这个&#34;简单&#34;代码在这里:http://wistudat.be/try/calcuword.php

<form action="./calcuword.php" onsubmit="" method="post"> 
<b>Enter your word: </b>
<br> 
<input type="text" name="word">
<br> 
<input type="submit" value="SUBMIT">
</form>
<p style="color:red;">

<?php 

$word= filter_var($_POST['word'], FILTER_SANITIZE_STRING);
echo "String : ".$word ." to integer : ";

function CtoI($alfa)
{
$array = array_flip(range(a, z));
return $array[$alfa] + 1;
}

$chars = str_split($word);
foreach($chars as $char){
if($word){
echo CtoI($char);
if ($char === end($chars)){
echo "=";
}
else{
echo "+";
}

} //End if($word)
} //End foreach

?>