Запис
рядкових виразів, лапки h2>
Курепин Руслан p>
З великим
подивом дізнався, що багато (іноді навіть не початківці) PHP-програмісти не
знайомі з різницею між обробкою даних в лапках ( ") і апострофа
( '). А тим часом, різниця є дуже важливою, хоч і проста за своєю суттю - в лапках
дані "Парс", а в апострофа - ні. p>
Простіше кажучи,
рядки в подвійних лапках ( ") PHP буде аналізувати на наявність
спеціальних символів і змінних, а в одинарних лапках (апостроф) майже
ніяких змін проводитися не буде. p>
Загалом, не
треба мати розуму аж понад голову, щоб зробити висновок - рядки в одинарних лапках
обробляються швидше, ніж у подвійних. І тести показують, що так воно і є. P>
Докладніше про
рядках можна прочитати на сторінці довідки по PHP:
http://www.php.net/manual/en/language.types.string.php. p>
Мабуть,
вийшла найкоротша PHP-нотатка. Давайте доповнимо її деякими прикладами
запису рядків у PHP. p>
Припустимо, що
у нас є SQL-запит, що складається з базового тексту і деяких
змінних. Нехай найпростіша запис виглядає так: p>
$ query = "select $ field from $ table where $ field = '$ data' limit
$ n "; p>
Це
традиційна запис, який можна побачити і в підручниках з PHP і в офіційній
документації. Та й я в своєму курсі часто використовував саме такий запис
строкових даних. p>
Дійсно,
для розуміння подібна форма запису найбільш зручна. Особливо зручна вона
новачкам, ще не навчилися нальоту "ковтати" конкатенацію
підрядка і змінних. Між тим, це самамя "важка" форма запису.
PHP довше інших буде інтерпретувати цей рядок. P>
Наступним кроком
назустріч PHP можна назвати винесенням імен змінних з рядки: p>
$ query = "select
". $ field." from ". $ table." where
". $ field ."='".$ data." 'limit ". $ n; p>
Це прискорить
обробку рядка, можете мені повірити. p>
Що можна
зробити ще? Потрібно поміняти подвійні лапки на одинарні апострофи, щоб PHP
не намагався розбирати рядки у пошуках змінних і спецсимволів: p>
$ query = 'select'. $ field. ' from
'. $ table.' where '. $ field .'=''.$ data.''limit'. $ n; p>
Ось ми і
привели рядок до "правильного" виду. У такому вигляді рядок буде зрозуміла
інтерпретатором швидко і без різночитань. p>
Наостанок
спробую вигадати забавний приклад комбінування одинарних і подвійних лапок: p>
echo
'Змінна $ name містить назву''. $ Name .''.< br>'. "N". 'А
змінна $ id містить цифру '. $ id.', яка в свою чергу допоможе вибрати
з масиву $ select []
значення:
'. "n".' name '. "t".' age '. "t".' town
та інші ...'." n ".'.'; p>
Результат
роботи цього рядка виглядає так: p>
----- p>
Змінна
$ name містить ім'я''. p>
А мінлива
$ id містить цифру, яка в свою чергу допоможе вибрати з масиву
$ select [] значення: p>
name age town p>
та інші ... . p>
----- p>
Але й це ще не
все. Якщо мова йде про html-файлі, то останній приклад можна записати, наприклад,
як: p>
----- p>
p>
Змінна
$ name містить назву''.
p>
А мінлива
$ id містить цифру, яка в свою чергу допоможе вибрати з
масиву $ select [] значення:
p>
p>
name age town p>
p>
і
інші ...
p>
p>
----- p>
Результат буде
таким же, тільки виконається скрипт набагато швидше. Можна запропонувати і ще
кілька варіантів запису цього виразу, але я зав'язую з цим захоплюючим
заняттям. p>
06.03.03 p>
P.S. Не треба
думати, що є універсальні форми запису рядкових виразів. Навіть від версії
до версії самого PHP відбуваються всілякі зміни, що впливають на швидкість
обробки тих або інших фрагментів, що вже там говорити ... Правди заради варто
помітити, що сьогоднішня швидкість комп'ютерів в більшості випадків дозволяє
знехтувати оптимізацією запису рядкових виразів, але і зловживати
зручністю на шкоду продуктивності теж не слід. Думайте. P>
Увага! Забороняється передрук цієї статті або її частини без
узгодження з автором. Якщо ви хочете розмістити цю статтю на своєму сайті або
видати в друкованому вигляді, зв'яжіться з автором. p>
Список
літератури h2>
Для підготовки
даної роботи були використані матеріали з сайту http://andrey.nnov.ru/
p>