2012-01-13 2 views
2

Есть ли встроенная функция PHP, через которую я могу подсчитать сумму индексов букв алфавита, найденных в строке?Как я могу вычислить сумму «буквенных чисел» в строке?

<?php 
$a = "testword"; 
echo "Count of Characters is: " . strlen($a); 
?> 

Теперь я хочу получить кумулятивное «общее» значение этого слова.

например.

  • A является первой буквой алфавита, так что карты в 1
  • B является второй буквой алфавита, так что карты в 2
  • C является третьей буквой алфавита так сопоставляется 3
  • D является четвёртой буква алфавита так, чтобы карты 4

Таким образом, слово ABCD дает 1 + 2 + 3 + 4 = 10

Аналогично мне нужна функция для «testword» или любого слова.

+2

Пожалуйста, объясните немного лучше, что вы пытаетесь достичь. –

+0

Мне любопытно, зачем вам это нужно? – 472084

+1

количество букв * facepalm * –

ответ

8
function WordSum($word) 
{ 
    $cnt = 0; 
    $word = strtoupper(trim($word)); 
    $len = strlen($word); 

    for($i = 0; $i < $len; $i++) 
    { 
     $cnt += ord($word[$i]) - 64; 
    } 

    return $cnt; 
} 

var_dump(WordSum("testword")); 
+0

whati s $ c здесь ?? – Simran

+0

@craig: Gud ответ !! – Rikesh

+0

$ c является индивидуальным символом в строке – craig1231

-3
$a = "test"; 
$b = "word"; 
echo (strlen($a) + strlen($b)); 
+0

Это не то, что я хочу. Pls снова прочитал вопрос – Simran

+0

Ваш обновленный ответ имеет больше смысла. Вот что я понял из этого. извинения –

0

Просто, чтобы показать совершенно другой метод, просто ради удовольствия продемонстрировать некоторые из функций массива в PHP:

$data = "testword"; 

$testResult = array_values(array_merge(array_fill_keys(range('A','Z'), 
                 0 
                ), 
             array_count_values(str_split(strtoupper($data) 
                    ) 
                 ) 
            ) 
         ); 
$wordCount = 0; 
foreach($testResult as $letterValue => $letterCount) { 
    $wordCount += ++$letterValue * $letterCount; 
} 

var_dump($wordCount); 
Смежные вопросы