Требуется извлечь каждый отдельный байт строки и выполнить над ним определённую обработку.
Для обработки строки можно использовать цикл for
. На каждой итерации цикла будет обрабатываться один байт строки.
Пример 1-16
$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++;
}
}
Этот пример подсчитывает количество гласных букв в строке.
Обработка каждого отдельного байта строки может быть полезна при вычислении последовательности Лукаса-Лемера (Look and Say sequence). Пример 1-17 демонстрирует, как написать последовательность Лукаса-Лемера.
Пример 1-17
// Инициализация строки
$r = '';
// $m — это текущий символ, изначально первый символ строки
$m = $s[0];
// $n — это количество одинаковых символов, изначально 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-17:**
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
Последовательность, полученная в примере 1-17, называется **последовательностью Лукаса-Лемера**, потому что каждый элемент этой последовательности содержит описание количества повторений предыдущего элемента. Например, первый элемент равен 1, и мы говорим «один 1». Второй элемент равен 11, и мы говорим «две единицы». Третий элемент равен 21, и мы говорим «одна двойка и одна единица».
#### См. также
* [Руководство по использованию `for`](http://php.net/manual/zh/control-structures.for.php).
* [Последовательность Лукаса-Лемера](https://en.wikipedia.org/wiki/Look-and-say_sequence).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )