Я хочу подсчитать частоту появления всех букв в строке. Скажем, у меня есть
$str = "cdcdcdcdeeeef";
Для этого я могу использовать str_split и array_count_values.
array_count_values(str_split($str));
Интересно, есть ли другой способ сделать это без преобразования строки в массив? благодаря
Вам не нужно преобразовывать это в array()
вы можете использовать substr_count()
для достижения того же.
substr_count – подсчитать количество подстрок вхождения
<?php $str = "cdcdcdcdeeeef"; echo substr_count($str, 'c'); ?>
Руководство PHP
substr_count()
возвращает количество раз, когда подстрока иглы встречается в строке стога сена. Обратите внимание, что игла чувствительна к регистру.
РЕДАКТИРОВАТЬ:
Извините за неправильное представление, вы можете использовать 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: count_chars
count_chars – Возвращает информацию об символах, используемых в строке
Существует функция 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"; } ?>