Семантика развития языков программирования и сферы их приложений быстро заняли правильные позиции. Конечно, математические расчеты траекторий планет и движение курсов валют на рынках по-прежнему волнуют общество, но и там достойное место занимают строки символов.
Существенный момент: от строгой типизации переменных до абсолютно свободного их использования и автоматического преобразования типов по мере необходимости путь был гораздо дольше.
Все в мире есть строки
С этим можно спорить, но особого смысла нет, а в программировании - тем более. Семантика explode PHP значительно упростила работу программиста: она перенесла использование нескольких функций и конструкций в одно целое.
При этом синтаксис и семантика самого PHP в отношении данной функции предоставляет возможность разработчику придумать собственную семантику благодаря именно этой функции, хотя и другим строковым функциям найдется достойная работа.
Нет ничего проще: explode PHP просто разбивает одну строку по местам вхождения в неё другой строки. Как правило, это одиночный символ:
- запятая «,»;
- точка «.»;
- косая черта «/»;
- тильда «~»;
- и все что угодно по вкусу разработчика.
Но разбивать строку можно по чему угодно, и вторая строка (delimiter) может иметь смысл целого тега, элемента тега или нести в себе любое значение в пределах воображения программиста.
Случай, когда число есть строка
Числам свойственно участвовать в математических операциях, а строкам - в строчных. Идея правильная и интересная, но старая и бесполезная.
Сегодня переменная может менять тип по дороге от одного оператора до другого, и в каждой синтаксической конструкции все переменные, которые в ней участвуют, имеют тот тип, который определяет синтаксис этой конструкции.
Так если число попадает в строчную конструкцию, оно становится строкой, а если строка участвует в математической операции, то все её начало до первого вхождения нецифрового символа будет интерпретировано как число.
В этом коде explode в PHP демонстрирует, как можно легко отделить целую часть от дробной при любом количестве цифр. Результат исполнения приведенного кода представлен ниже.
Сомнительно, что такой смысл был вложен в эту функцию создателями языка. Но вариантов такого именно применения для этой функции можно придумать великое множество.
Следует иметь ввиду, что delimiter (строка, по которой происходит разбиение) исчезает, то есть после разбиения строки explode PHP извлекает из неё все найденные delimiter.
Случай, когда строка есть массив
В приведённом примере строка цифр разбивается explode PHP по запятой, и создаётся массив. Обратная функция implode PHP может этот массив слить в единую строку, например, через точку.
В первом случае строка не меняется, во втором случае массив тоже остается. Иначе говоря, используя строки, можно разбивать по одному основанию, а соединять по-другому.
В первом приближении можно, например, выполнить замену строчных букв на прописные. Такая задача для explode/implode, наверное, будет не слишком интересной, но важен тот момент, что разбиение может быть любым! Как соединять - это тоже любой вариант.
Строки и объекты
Объектно-ориентированное программирование сегодня повсюду, а любая программа состоит из объектов. Естественно, PHP explode описание никогда не упоминало про объекты, но ничто не мешает создать идею о непосредственной связи между строками и объектами.
В этом контексте объект можно представлять строкой символов, помещая его в базу данных или передавая по каналам связи. Можно организовать обмен информацией между объектами не через громоздкие массивы, а через строки параметров.
Отправитель соединяет в единое целое (строку) нужные данные, а получатель посредством explode PHP восстанавливает их, то есть извлекает нужные последовательности символов.
Если развить эту идею на момент, когда объект создается, то обычно приходится «вручную» или из базы данных заполнять его нужными данными.
Используя explode, можно автоматизировать процесс создания экземпляров объекта, причем имея абстрактный объект, можно управлять его типом, передавая для инициализации различные строки символов. Такой подход уменьшает количество различных объектов и упрощает манипулирование ими.