На этом шаге мы рассмотрим функцию, вычисляющую длину строки.
На практике очень часто требуется узнать длину строки. Для этого в РНР имеется специальная функция strlen(), принимающая в качестве входных параметров строку и возвращающая ее длину виде целого числа.
Ее общий вид следующий:
Рис.1. Общий вид функции strlen()
Например:
<?php $str = "Hello, World!"; $len = strlen($str); // длина строки for ($i=0; $i<=$len; $i++) // посимвольный вывод строки {echo $str[$i]; echo "<br>"; } ?>
Результат выполнения этой программы смотрите на рисунке 2.
Рис.2. Пример посимвольного вывода строки
Первое, что бросается в глаза - это присутствие квадратных скобок, так, как они использовались при работе с массивами. Здесь нет ничего странного, так как в РНР, как и во многих других языках программирования, строку можно воспринимать как массив символов, проиндексированный целыми числами, начиная с нуля.
Вернемся к нашему примеру. Сначала мы инициализируем строку, затем с помощью функции strlen() получаем ее длину в виде целочисленного значения, которое запишем в переменную $len. Далее создаем простой цикл for на $len итераций. У многих начинающих программистов часто возникает соблазн не использовать дополнительную переменную для хранения длины строки. Действительно, функцию strlen() можно записать прямо в определении цикла for. Например:
for ($i=0;$i<= strlen($str);$i++) {...}.
Тем не менее, категорически не рекомендуется так делать. Во-первых, этот код работает медленнее, чем с использованием дополнительной переменной, так как приходится постоянно вызывать функцию strlen(). Во-вторых, длина строки может меняться в теле цикла, соответственно, поменяется количество итераций, что может повлиять на ход программы.
В теле цикла нашей программы мы выводим один символ и выполняем перевод строки. Еще раз хочется обратить ваше внимание, что нумерация символов происходит с нуля.
На следующем шаге мы рассмотрим функции, позволяющие сравнивать строки.