• Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Вопросы по верстке, дизайну, управлению и настройки модулей СMS от uCoz » Условные операторы и коды системы юКоз (uCoz) » Условные операторы и коды системы юКоз (uCoz) (Справка по условным операторам и кодам системы uCoz)
Условные операторы и коды системы юКоз (uCoz)
Дата: Среда, 08.08.2012, 11:24 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Вычисление выражений:


Операнды:


Различаются 3 типа операндов:
строковые (задают текст), целочисленные (задают целое число от -9223372036854775808 до 9223372036854775807), дробные (задают дробное число).

Строковые операнды задаются в виде переменных шаблона ($USERNAME$) или констант в одинарных ('Константа1') или двойных кавычках ("Константа2"). При необходимости использовать выбранный символ кавычки внутри самой константы его можно экранировать с помощью обратного слеша ('It\'s all right' будет прочитана как "It's all right"). Сам обратный слеш также можно экранировать ("большой\\маленький" будет прочитана как "большой\маленький"). Перед всеми остальными символами обратный слеш не имеет экранирующего эффекта и выводится вместе с последующим символом. Внутри строковых констант не допускается наличие закрывающей скобки выражения ?>, т.к. она будет воспринята как признак окончания выражения.

Целочисленные операнды могут быть заданы в десятичной, двоичной, восьмеричной или шестнадцатеричной системе счисления. Десятичные константы задаются как последовательность цифр от 0 до 9 (123, 999999, 3). Двоичные константы начинаются с префикса "0b" (или "0B"), за которым следует последовательность цифр 0 и 1 (0b1000 задает число 8, 0B11111111 задает число 255). Восьмеричные константы начинаются с префикса "0o" (или "0O"), за которым следуют цифры от 0 до 7 (0o200 задает число 128, 0o456 задает число 302). Шестнадцатеричные константы начинаются с префикса "0x" (или "0X"), за которым следуют цифры от 0 до 9 и латинские буквы от A до F без учета регистра (0x10A задает число 266, 0Xffff задает число 65535).

Дробные операнды задаются как последовательность цифр от 0 до 9, в которой обязательно присутствует десятичная точка (123.56) или латинская буква E, отделяющая десятичный порядок (1.234e6 задает число 1234000, 1e3 задает число 1000, 2e-4 задает число 0.0002), или значение числа выходит за допустимый диапазон для целочисленных операндов.

Все описанные ниже операторы, кроме оговоренных отдельно, автоматически преобразуют свои операнды к нужному типу (выражение возвратит 8). При преобразовании строкового значения в числовое используются правила из пункта 4 (т.е. результат всегда будет считаться дробным, а альтернативные системы счисления не распознаются) и дополнительно распознается знак минус (-) перед числом.

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

Целочисленные операнды преобразуются в строку без потери точности и без использования десятичных дробей ( выведет '1234567890123445678').

Дробные операнды преобразуются в строку в формате с плавающей запятой с точностью до 15 разрядов ( выведет '1.23456789012346e+17').

Выражения:


Выражения вычисляются с учетом приоритетов операций. Приоритетом можно управлять с помощью круглых скобок (выражение возвратит 16). При отсутствии скобок приоритет операторов определяется следующей таблицей (в порядке уменьшения приоритета):

Приоритет выражений:


Код
 ** 

Код
 *, /, % 

Код
 +, - 

Код
 =, ==, !=, <=, <, >=, > 

Код
 & 

Код
 |, ^ 

Код
 &&, and 

Код
 ||, or 


Выражение считается ложным, если результат его вычисления представляет собой пустую строку, строку '0' (т.е. строку с единственной цифрой 0, а строки '4', 'Hello', '00' или '0.0' считаются истинными), целочисленное значение 0 или дробное значение 0.0.
Все прочие значение считаются истинными.


Арифметические операторы:


Код
  +, -, *
- Бинарное арифметическое сложение, вычитание и умножение соответственно. Если оба операнда целочисленные, то результат также будет целочисленным (не должен выйти за диапазон целочисленных значений).
унарный +, унарный - Эквивалентно сложению с нулем и вычитанию из нуля соответственно, но имеет высокий приоритет.

Код
  /  
- Арифметическое деление. Результат всегда дробный.

Код
  %  
- Остаток от деления. Операнды приводятся к целым числам. Результат всегда целочисленный.

Код
  **  
- Бинарная операция возведения в степень. Первый операнд (должен быть положительным) возводится в степень второго. Результат всегда дробный.


Операторы сравнения:


Код
  =, ==  
- Проверка равенства. Если оба операнда строковые, то проводится сравнение строк с учетом регистра (строчные и прописные буквы различаются). Если оба операнда целочисленные, то сравниваются целые числа. В противном случае операнды сравниваются как дробные числа. Результат оператора - целое число 1, если операнды равны, и 0, если не равны. Примеры: ложно (сравниваются как строки), истинно (сравниваются числа).

Код
  !=  
- Проверка неравенства. Аналогичен проверке равенства, но результат противоположный.

Код
  <=, <, >=, >  
- Сравнение двух чисел. Если оба операнда целочисленные, то сравниваются целые числа. В противном случае операнды сравниваются как дробные числа. Результат оператора - целое число 1, если выполняется условие оператора, и 0, если не выполняется.


Логические операторы:


Код
  !, not  
- Унарный оператор логического отрицания. Если операнд ложный, то результатом является целое число 1, иначе 0.

Код
  &&, and  
- Бинарный оператор логического "И" (умножения). Если оба операнда истинны, то результатом является целое число 1, иначе 0.

Код
  ||, or  
- Бинарный оператор логического "Или" (сложения). Если любой из операндов истинен, то результатом является целое число 1, иначе 0.


Побитовые операторы


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

Код
  &, |, ^  
- Бинарные операторы побитового "И" (умножения), "Или" (сложения) и "Исключающее Или" соответственно.

Код
  ~  
- Унарный оператор побитового отрицания (инверсии).


Функции:


Код
int N
int(N)
- Возвращает целую часть числового параметра N, полученную округлением в сторону нуля. Результат всегда целочисленный.

Код
abs N
abs(N)
- Возвращает абсолютное значение (модуль) числового параметра N. Если операнд целочисленный, то результат также будет целочисленным. Иначе дробным.

Код
rnd( )
rnd N
rnd(N)
- Возвращает случайное число. Если параметр отсутствует или равен 0, то возвращается дробное число от 0 включительно до 1 не включительно. Если параметр целочисленный (не равный 0), то возвращается целое число от 0 до N-1 включительно при N>0, и число от N+1 до 0 включительно при N<0. Иначе параметр приводится к дробному числу и умножается на случайное дробное число от 0 включительно до 1 не включительно. Примеры: вернет целое число от 0 до 9 включительно,
Код
<? rnd 10.0 ?>
вернет дробное число от 0 до 10 не включительно.

Код
min(A1,A2,...,An)
max(A1,A2,...,An)
- Возвращает соответственно минимальное или максимальное значение среди переданных числовых параметров. Результат всегда дробный.

Код
len S
len(S)
- Возвращает длину строкового параметра. Результат всегда целочисленный.

Код
strpos(S1,S2)
- Ищет первое вхождение строки S2 в строку S1, проходя от начала S1 к концу. Сравнение производится с учетом регистра. Оба параметра должны быть заданы как строки (или как результат вызова функции, возвращающей строку). Поиск ограничен первыми 1000 символами строки S1. Сравнение ограничено первыми 100 символами строки S2. Возвращает целое число - позицию строки S2 от начала S1, считая от 0. Если вхождение не найдено, возвращает -1.
Код
<?strpos('Васяся','ся')?>
возвратит 2.

Код
strrpos(S1,S2)
- Аналогична strpos, но ищет последнее вхождение S2. Поиск ограничен последними 1000 символами строки S1.
Код
<?strpos('Васяся','ся')?>
возвратит 4.

Код
substr(S,N1,N2)
substr(S,N1)
- Возвращает подстроку из строки S, начиная с позиции N1 (первый символ имеет позицию 0), длиной N2 символов. Параметр S должен быть задан как строка (или как результат вызова функции, возвращающей строку). N1 и N2 приводятся к целым значениям.
Если N2 не указан, то возвращается подстрока с позиции N1 до конца строки S.
Если N1 отрицателен, то начальная позиция отсчитывается от конца строки S.
Если N2 отрицателен, то задает конечную позицию от конца строки S.
Код
<?substr('Привет',2)?>
возвратит 'ивет',
Код
<?substr('Привет',2,2)?>
возвратит 'ив',
Код
<?substr('Привет',-2)?>
возвратит 'ет',
Код
<?substr('Привет',0,-2)?>
возвратит 'Прив'.


 
Дата: Среда, 08.08.2012, 11:34 |
bandjuk
Генерал-майор
Группа: Пользователи
Сообщений: 290
Награды: 1
Репутация: 22
Статус: Offline


likbezz, отличная статья, мне точно пригодится, всё в одном месте! Спасибо! Нужно тебе на главной странице вывести на неё ссыль!

Сообщение отредактировал bandjuk - Среда, 08.08.2012, 11:34
 
Дата: Среда, 08.08.2012, 11:51 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


bandjuk,
отличная статья

Скопирована один-к-одному из помошника в ПУ.


 
Скрипты и коды для юкоз - Форум аццкого кодера » Вопросы по верстке, дизайну, управлению и настройки модулей СMS от uCoz » Условные операторы и коды системы юКоз (uCoz) » Условные операторы и коды системы юКоз (uCoz) (Справка по условным операторам и кодам системы uCoz)
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия