Посимвольная обработка строк

Задача
Нужно обработать каждый символ строки по отдельности.

Решение
Цикл по символам строки с помощью оператора for. В этом примере подсчитываются гласные в строке:

$string = "This weekend, I'm going shopping for a pet chicken.";
$vowels = 0;
for ($i = 0, $j = strlen($string); $i < $j; $i++) {
    if (strstr('aeiouAEIOU',$string[$i])) {
        $vowels++;
    }
}


Обсуждение
Посимвольная обработка – это самый простой способ подсчета последовательности «Смотри и говори»:

function lookandsay($s) {
    // инициализируем возвращаемое значение пустой строкой
    $r = '';
    // переменная $m, которая содержит подсчитываемые символы, 
// инициализируется первым символом * в строке
    $m = $s[0];
    // $n, количество обнаруженных символов $m, инициализируется значением 1
    $n = 1;
    for ($i = 1, $j = strlen($s); $i < $j; $i++) {
        // если символ совпадает с последним символом
        if ($s[$i] == $m) {
            // увеличиваем на единицу значение счетчика этих символов
            $n++;
        } else {
            // иначе добавляем значение счетчика и символа 
               к возвращаемому значению //
            $r .= $n.$m;
            // устанавливаем искомый символ в значение текущего символа //
            $m = $s[$i];
            // и сбрасываем счетчик в 1 //
            $n = 1;
        }
    }
    // возвращаем построенную строку, а также последнее значение 
       счетчика и символ //
    return $r.$n.$m;
}
for ($i = 0, $s = 1; $i < 10; $i++) {
    $s = lookandsay($s);
    print "$s\n";
}

1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211

Это называется последовательностью «Смотри и говори», поскольку каждый элемент мы получаем, глядя на предыдущие элементы и говоря, сколько их. Например, глядя на первый элемент, 1, мы говорим «один». Следовательно, второй элемент – «11», то есть две единицы, поэтому третий элемент – «21». Он представляет собой одну двойку и одну единицу, поэтому четвертый элемент – «1211» и т. д.
Теги:
элемент, символ, счетчика, string, единицу, символа, инициализируется, lookandsay, говори, Смотри, strlen, vowels, обработка, глядя, поэтому, строки, счетчик, return, также, строку, единицы, возвращаем, текущего, сбрасываем, устанавливаем, значению, возвращаемому, добавляем, представляет, print, 1211 , получаем, Например, элементы, говоря
Добавлено: 12 Июля 2018 19:44:19 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...