.RU

Запись строковых выражений, кавычки

Курепин Руслан

С большим удивлением узнал, что многие (иногда даже не начинающие) PHP-программисты не знакомы с разницей между обработкой данных в кавычках (") и апострофах ('). А между тем, разница очень важна, хоть и проста по своей сути — в кавычках данные "парсятся", а в апострофах — нет.

Проще говоря, строки в двойных кавычках (") PHP будет анализировать на наличие специальных символов и переменных, а в одинарных кавычках (апострофах) почти никаких изменений производиться не будет.

В общем, не надо быть семи пядей во лбу, чтобы сделать вывод — строки в одинарных кавычках обрабатываются быстрее, чем в двойных. И тесты показывают, что так оно и есть.

Подробнее о строках можно прочесть на странице руководства по PHP: http://www.php.net/manual/en/language.types.string.php.

Пожалуй, получилась самая короткая PHP-заметка. Давайте дополним ее некоторыми примерами записи строк в PHP.

Предположим, что у нас есть SQL-запрос, складывающийся из базового текста и некоторых переменных. Пусть самая простая запись выглядит так:

$query="select $field from $table where $field='$data' limit $n";

Это традиционная запись, которую можно увидеть и в учебниках по PHP и в официальной документации. Да и я в своем курсе часто использовал именно такую запись строковых данных.

Действительно, для понимания подобная форма записи наиболее удобна. Особенно удобна она новичкам, еще не научившимся налету "проглатывать" конкатенацию подстрок и переменных. Между тем, это самамя "тяжелая" форма записи. PHP дольше других будет интерпретировать эту строку.

Следующим шагом навстречу PHP можно назвать вынесением имен переменных из строки:

$query="select ".$field." from ".$table." where ".$field."='".$data."' limit ".$n;

Это ускорит обработку строки, можете мне поверить.

Что можно сделать еще? Нужно поменять двойные кавычки на одинарные апострофы, чтобы PHP не пытался разбирать строки в поисках переменных и спецсимволов:

$query='select '.$field.' from '.$table.' where '.$field.'=\''.$data.'\' limit '.$n;

Вот мы и привели строку к "правильному" виду. В таком виде строка будет понята интерпретатором быстро и без разночтений.

Напоследок попробую выдумать забавный пример комбинирования одинарных и двойных кавычек:

echo 'Переменная $name содержит имя \''.$name.'\'.
'."\n".'А переменная $id содержит цифру '.$id.', которая в свою очередь поможет выбрать из массива $select[] значения:
'."\n".'name'."\t".'age'."\t".'town и другие...'."\n".'.';

Результат работы этой строки выглядит так:

-----

Переменная $name содержит имя ''.

А переменная $id содержит цифру , которая в свою очередь поможет выбрать из массива $select[] значения:

name age town

идругие... .

-----

Но и это еще не все. Если речь идет о html-файле, то последний пример можно записать, например, как:

-----

Переменная $name содержит имя ''.

А переменная $id содержит цифру , которая в свою очередь поможет выбрать из массива $select[] значения:

name age town

и другие...

-----

Результат будет таким же, только выполнится скрипт гораздо быстрее. Можно предложить и еще несколько вариантов записи этого выражения, но я завязываю с этим увлекательным занятием.

06.03.03

P.S. Не надо думать, что есть универсальные формы записи строковых выражений. Даже от версии к версии самого PHP происходят всевозможные изменения, влияющие на скорость обработки тех или иных фрагментов, что уж там говорить... Правды ради стоит заметить, что сегодняшняя скорость компьютеров в большенстве случаев позволяет пренебречь оптимизацией записи строковых выражений, но и злоупотреблять удобством в ущерб производительности тоже не следует. Думайте.

Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.


utverzhdat-chto-v-sisteme-rossijskogo-prava-otsutstvuet-distribyutorskij-dogovor-vse-ravno-chto-pryatat-golovu-v-pesok-vpraktike-rossijskogo-biznesa-on-davno.html
utverzhdayu-kalendarno-tematicheskij-plan-lekcij-dlya-studentov-6-kursa-lechebnogo-fakulteta-volggmu-po-ciklu-vnutrennie.html
utverzhden-avansovij-otchet-za-priobretenie-materialov.html
utverzhden.html
utverzhdeno-postanovleniem-pravitelstva-irkutskoj-oblasti.html
utverzhdeno-postanovleniem-pravitelstva-respubliki-tadzhikistan-ot-30-06-2007-goda-stranica-4.html
  • report.bystrickaya.ru/k-k-arsenev-slovo-k-chitatelyu-stranica-7.html
  • writing.bystrickaya.ru/20-korotkih-sovetov-ot-freda-kelli-kotorie-pomogut-vam-brosit-kurit.html
  • tests.bystrickaya.ru/kurs-lekcij-lekciya-vvedenie-v-filosofskuyu-suicidologiyu-lekciya-obshaya-harakteristika-issledovatelskogo-podhoda-k-probleme-suicida-stranica-7.html
  • student.bystrickaya.ru/26-otorinolaringologiya-metodicheskoe-posobie-dlya-vrachej-sankt-peterburg-2007.html
  • learn.bystrickaya.ru/franchajzing-chast-4.html
  • write.bystrickaya.ru/etapi-razvitiya-neftegazovoj-promishlennosti-rossii.html
  • assessments.bystrickaya.ru/centralnij-finansovij-okrug-eho-moskvi-eho-05-08-2008-varfolomeev-vladimir-18-00-7.html
  • abstract.bystrickaya.ru/25-spori-svyazannie-so-srokami-podachi-deklaracij-nalogoplatelshikami-informacionno-konsultacionnij.html
  • student.bystrickaya.ru/3-rasshirenie-vozmozhnostej-ou-b-i-goroshkov-radioelektronnie-ustrojstva-spravochnik.html
  • lecture.bystrickaya.ru/analiz-polozhenij-zakona-o-nesostoyatelnosti-bankrotstve.html
  • predmet.bystrickaya.ru/rossijskoj-federacii-federalnoe-gosudarstvennoe-avtonomnoe-obrazovatelnoe-uchrezhdenie-visshego-professionalnogo-obrazovaniya.html
  • learn.bystrickaya.ru/glava-ii-golodani-kniga-iz-serii-celitelnih-sil.html
  • testyi.bystrickaya.ru/44-kakovo-vashe-semejnoe-polozhenie-metodika-issledovanij-v-socialnoj-rabote-uchebno-metodicheskij-kompleks-disciplini.html
  • esse.bystrickaya.ru/rapackaya-l-a-mirovaya-hudozhestvennaya-kultura-ch-1-i-ch2-ucheb-dlya-uch-sya-11-kl.html
  • school.bystrickaya.ru/ludwig-van-beethoven.html
  • prepodavatel.bystrickaya.ru/tyagovij-i-dinamicheskij-raschet-avtomobilya-vaz-21093.html
  • kolledzh.bystrickaya.ru/analiz-igr-s-a-kapustin-dlya-studentov-fakultetov-psihologii-visshih-uchebnih-zavedenij-po-napravleniyu-521000-psihologiya.html
  • notebook.bystrickaya.ru/kniga-vtoraya-stranica-17.html
  • otsenki.bystrickaya.ru/rukovoditel-cik-edinoj-rossii-andrej-vorobev-v-samie-slozhnie-momenti-prezident-okazivalsya-ryadom.html
  • spur.bystrickaya.ru/mastera-sporta-mastera-sporta-mezhdunarodnogo-klassa-zasluzhennie-mastera-sporta-olimpijskie-chempioni-zasluzhennie-treneri-rossii-zasluzhennie-rabotniki-fizich.html
  • studies.bystrickaya.ru/buhgalterskij-uchet-v-stroitelstve-2.html
  • shpargalka.bystrickaya.ru/vladimir-gubarev-serebristie-oblaka-sbornik-statej-k-100-letiyu-so-dnya-rozhdeniya-sergeya-pavlovicha-korolyova.html
  • holiday.bystrickaya.ru/nekotorie-svedeniya-o-konditerskih-izdeliyah-chast-6.html
  • klass.bystrickaya.ru/7-2-tematika-kontrolnih-rabot-po-uchebnomu-kursu-administrativno-pravovie-osnovi-vzaimodejstviya-gosudarstva-i-biznesa.html
  • shpargalka.bystrickaya.ru/uchebno-metodicheskoe-posobie-bijsk-2004-obshie-metodicheskie-ukazaniya.html
  • lektsiya.bystrickaya.ru/proektnaya-deklaraciya-ooo-diskom.html
  • control.bystrickaya.ru/dyakonov-m-ocherki-obshestvennogo-i-gosudarstvennogo-stroya-drevnej-rusi-elektronnij-resurs-m-dyakonov-elektron-tekst-dannie-b-m-1908-rezhim-do-stranica-11.html
  • uchebnik.bystrickaya.ru/vkakom-vozraste.html
  • uchenik.bystrickaya.ru/birzhevie-sdelki-chast-5.html
  • knowledge.bystrickaya.ru/metodicheskie-ukazaniya-po-vipolneniyu-prakticheskoj-raboti-proektirovanie.html
  • portfolio.bystrickaya.ru/otveti-na-voprosi-soderzhashiesya-v-obrasheniyah-organov-ispolnitelnoj-vlasti-subektov-rossijskoj-federacii-i-administracij-municipalnih-obrazovanij.html
  • vospitanie.bystrickaya.ru/yuridicheskij-analiz-sostava-banditizma.html
  • kolledzh.bystrickaya.ru/analiz-strukturi-zatrat-na-personal-i-ih-ocenka.html
  • institut.bystrickaya.ru/tuk-e-zhivyal-mladiyat-avraam-arch-1.html
  • write.bystrickaya.ru/federalnoe-agentstvo-po-atomnoj-energii.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.