Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [ 43 ] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

Строковые выражения

Строки в PHP - одни из самых основных объектов. Как мы уже говорили, они могут содержать текст вместе с символами форматирования или даже бинарные данные. Определение строки в кавычках или апострофах может начинаться на одной строке, а завершаться - на другой. Вот пример, который синтаксически совершенно корректен:

$a="Это текст, начинающийся на одной строке и продолжающийся на другой, третьей и т. д.";

Переводит значение выражения в строку.

□ $b=(bool)(выражение)

Преобразует значение выражения в логический тип. То есть, после выполнения этого оператора в $b окажется либо true, либо false.

Вообще-то, есть еще два хитроумных оператора (array) и (object), но эти операторы мы рассматривать не будем в силу их крайне слабой распространенности.

Логические выражения

Логические вхражения - это вхражения, у которых могут быть только два значения: ложь и истина (или, что почти то же самое, 0 и 1). Что, поверили? Напрасно - на самом деле абсолютно любое выражение может рассматриваться как логическое в "логическом" же контексте (например, как условие для конструкции if-else). Ведь, как уже говорилось, в качестве истины может выступать любое ненулевое число, непустая строка и т. д., а под ложью подразумевается все остальное.

Для логических выражений справедливы все те выводы, которые мы сделали насчет логических переменных. Эти выражения чаще всего возникают при применении операторов >, < и == (равно), (логическое ИЛИ), && (логическое И), ! (логическое НЕ) и других. Например:

$a = 10<5; $a=false

$a = $b==1; $a=true, апёё $b=5

$a = $b>=1&&$b<=10 $a=true, если $b в пределах от 1 до 10

$a = !($b$c)&&$d; $a=true, если $b и $c ложны, а $d - истинно

Как осуществляется проверка истинности той или иной логической переменной? Да точно так же, как и любого логического выражения:

$b = $a>=1&&$a<=10; присваиваем $b значение логического в1ражения if($b) echo "a в нужном диапазоне значений";



Я уже много раз использовал в примерах строковые константы, заключенные как в кавычки, так и в апострофы. Настало время поговорить о том, чем эти представления отличаются.

Строка в апострофах

Начнем с самого простого. Если строка заключена в апострофы (например, строка ), то она трактуется почти в точности так же, как записана, за исключением двух специальных последовательностей символов:

□ последовательность \ трактуется PHP как апостроф и предназначена для вставки апострофа в строку, заключенную в апострофы;

□ последовательность \\ трактуется как один обратный слэш и позволяет вставлять в строку этот символ.

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

Строка в кавычках

По сравнению с апострофами, кавхчки более "либеральных". То есть, набор специальн1х метасимволов, которые, будучи помещены в кавычки, определяют тот или иной специальный символ, гораздо богаче. Вот некоторые из них:

□ \n обозначает символ новой строки;

□ \r обозначает символ возврата каретки;

□ \t обозначает символ табуляции;

□ \$ обозначает символ $ , чтобы следующий за ним текст случайно не был интерполирован, как переменная;

□ \" обозначает кавычку;

□ \\ обозначает обратный слэш;

□ \xNN обозначает символ с шестнадцатеричным кодом NN.

Переменные в строках интерполируются. Например:

$a="Hello"; echo "$a world!"

Этот фрагмент выведет Hello world!, т. е. $a в строке была заменена на значение переменной $a (этому поспособствовал знак доллара, предваряющий любую переменную).

Давайте рассмотрим еще один пример.

$a="Hell"; neiai Hello aag абёай "o" echo "$ao world!";



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

Here-документ

В четвертой версии PHP появился и еще один способ записи строковых констант, который исторически называется here-документом (встроенный документ). Фактически он представляет собой альтернативу для записи многострочных констант. Выглядит это примерно так:

$a=«<MARKER

Далее идет какой-то текст,

возможно, с переменными, которые интерполируются: например, $name будет интерполирована здесь.

MARKER;

Строка MARKER может быть любым алфавитно-цифровым идентификатором, не встречающимся в тексте here-документа в виде отдельной строки. Синтаксис накладывает 2 ограничения на here-документы:

□ после <<<MARKER и до конца строки не должны идти никакие непробельные символы;

□ завершающая строка MARKER; должна оканчиваться точкой с запятой, после которой до конца строки не должно быть никаких инструкций.

Эти ограничения настолько стесняют свободу при использовании here-документов, так что, думаю, вам стоит совсем от них отказаться. Например, следующий код работать не будет, как бы нам этого ни хотелось (функция strip tags() удаляет тэги из строки):

echo strip tags(«<EOD);

Мы ожидаем, что выведется опять та же самая строка. Но задумаемся: как PHP узнает, имели ли мы в виду переменную $a или же переменную $ao? Очевидно, никак. Запустив фрагмент, убеждаемся, что он генерирует сообщение о том, что переменная $ao не определена. Как же быть? А вот как:

$a="Hell"; слово Hello без буквы "o" echo $a."o world!"; один способ echo "{$a}o world!"; другой способ echo "${a}o world!"; третий способ!

Мы видим, что существует целых три способа преодолеть проблему. Каким из них воспользоваться - дело ваше. Мне больше нравится вариант с {$a} , хотя он и введен в PHP лишь недавно.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [ 43 ] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189