2015-09-06 2 views
2

Я хочу подсчитать частоту появления всех букв в строке. Скажем, у меня естьсчитать вхождения всех букв в строке PHP

$str = "cdcdcdcdeeeef"; 

Для достижения этой цели я могу использовать str_split и array_count_values.

array_count_values(str_split($str)); 

Удивление, если есть другой способ сделать это, не преобразовывая строку в массив? Спасибо

ответ

2

Вам не обязательно преобразовать это в array() вы можете использовать substr_count() для достижения этого.

substr_count - подсчитать количество вхождений подстроки

<?php 
$str = "cdcdcdcdeeeef"; 
echo substr_count($str, 'c'); 
?> 

PHP Manual

substr_count() возвращает число раз иглы подстрока происходит в строке стога. Обратите внимание, что игла чувствительна к регистру.

EDIT:

Извините за неправильное представление, вы можете использовать count_chars иметь подсчитанное значение каждого символа в строке. Пример:

<?php 
$str = "cdcdcdcdeeeef"; 

foreach (count_chars($str, 1) as $strr => $value) { 
    echo chr($strr) . " occurred a number of $value times in the string." . "<br>"; 
} 
?> 

PHP Manual: count_chars

count_chars - Возвращает информацию о символах, используемых в строке

+1

не тот ответ, который я ищу. Я хочу рассчитать все вхождения каждой буквы в строке, а не только конкретную букву. :) –

+0

@WildWidow Пожалуйста, проверьте edit :) – user5173426

1

Существует функция PHP, которая возвращает информацию о символах, используемых в строке: count_chars

Ну, возможно, это не то, что вы ищете, потому что согласно http://php.net/manual/en/function.count-chars.php это

подсчитывает число появлений каждого байт-значения (0..255) в строке и возвращает его различными способами

Пример из той же ссылке (http://php.net/manual/en/function.count-chars.php):

<?php 
$data = "Two Ts and one F."; 

foreach (count_chars($data, 1) as $i => $val) { 
    echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n"; 
} 
?> 
Смежные вопросы