П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3409 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 5958 раз(а).

Учебник HTML.
Просмотров 3202 раз(а).

Руководство по PHP5.
Просмотров 5419 раз(а).

Хостинг через призму DNS.
Просмотров 4018 раз(а).

Подборка текстов стандартных документов.
Просмотров 55710 раз(а).

Учебник PHP - Самоучитель
Просмотров 2996 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 4573 раз(а).

Внешние атаки...
Просмотров 3732 раз(а).

Учебник PHP.
Просмотров 2767 раз(а).

SSI в примерах.
Просмотров 37384 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Основы PHP

Операторы

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

+Сложение
-Вычитание
*Умножение
/Деление
%Вычисление остатка по модулю (к примеру: 5 % 2=1)

Поразрядные операторы

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

&Поразрядная конъюнкция (AND)
|Поразрядная дизъюнкция (OR)
^Поразрядное исключающее ИЛИ (XOR)
~Поразрядное отрицание (NOT)
<<Сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда
>>Сдвиг вправо битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда

Пример:

<?
   echo(4<<2); // равно 16 
   echo"<br>"; 
   echo(5>>1); // равно 2
   echo"<br>"; 
   echo(6&5); // равно 4
   echo"<br>"; 
   echo(6|5); // равно 7
   echo"<br>"; 
   echo(6^5); // равно 3
>?

Разберем первый пример. Двоичный код для 4 равен 100, при сдвиге влево на 2 разряда код 100 становится равным 10000, что соответствует десятичному значению 16. Остальные примеры могут быть разобраны аналогично. Обратим внимание на то, что сдвиг влево на n позиций эквивалентен умножению на 2n, а сдвиг вправо уменьшает соответствующее значение в 2n раз с отбрасыванием дробной части результата (поэтому 5>>1 равно 2). Основное назначение этих операторов – быстрые вычисления. Так как их поддержка осуществляется на аппаратном уровне (процессор), алгоритмы, выполненные с использованием данных операторов получаются очень производительными.

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

or или ||ИЛИ
Xorисключающее ИЛИ
and или &&И
!НЕ

Операторы этой группы, в отличие от поразрядных, работают с логическими переменными (boolean) и интенсивно используются в управляющих конструкциях: циклы и условия. Логические переменные, или более правильно, переменные типа Boolean имеют лишь два значения: true(истина) и false(ложь). В выражениях true и false можно заменить на 1(любое отличное от 0 число) и 0, соответственно. Возможность замены true и false на 1 и 0 – это «наследство» языка С, в котором не было специальных переменных true и false.

Логически операторы для переменных типа Boolean выполняют роль операторов сложения, вычитания для обычных переменных. Рассмотрим несколько примеров, если их смысл Вам не очень понятен – не расстраивайтесь, просто вернитесь сюда, прочитав главу 2. Оператор if(cond) проверяет условие cond, если его значение true – выполняется код в фигурных скобках, следующий за if, если false – код после оператора else. Если cond равен false – всё наоборот.

<php
   $flag = true; // Истина
   if($flag)
   {
      echo "<p>Переменная flag имеет значение true</p>";
   } else {
      echo "<p>Переменная flag имеет значение false</p>";
   }
?>

Результаты работы скрипта выглядят следующим образом:

Переменная flag имеет значение true

Если теперь заменить строчку

    $flag = true; // Истина
    на
    $flag = false; // Ложь

Результат, выдаваемый тэгом измениться:

Переменная flag имеет значение false

Т.е. мы зашли в блок else, так как в операторе if условие ложно.

Когда условие одно, как видите, всё просто. Когда условий больше - в дело вступают логические операторы:

<php
   $flag1 = true; // Истина
   $flag2 = true; // Истина
   if($flag1 && $flag2) // И $flag1 И $flag2 истины
   {
      echo "<p>Условие: true (Оба флага истины)</p>";
        // Да
   } else {
      echo "<p>Условие: false (Один из флагов ложен)</p>"; 
        // Нет, один или оба ложны
   }
?>

Этот скрипт выведет: Условие: true (Оба флага истины). Если хотя бы один из операторов окажется равным false (или оба сразу) – будет выведено: Условие: false (Один из флагов ложен).

Обязательно попробуйте поиграть с условиями: если вы не будете разбираться в условных операторах – Вы никогда не будете хорошим программистом ни на одном языке программирования. Если Вы считаете, что Вам не нужны условные операторы – Вам не нужен язык программирования.

Заменим && (И) на || (ИЛИ)

<php
   $flag1 = true; // Истина
   $flag2 = false; // Истина
   if($flag1 || $flag2) 
      // Хоть кто-то из двух флагов($flag1 $flag2) истинен
   {
      echo "<p>Условие: true (Один из флагов истин)</p>"; 
      // Да
   } else {
      echo "<p>Условие: false (Оба флага ложны)</p>"; 
      // Нет оба имеют значение false
   }
?>

Опять получаем: Условие: true.

Для И и ИЛИ, как видим, возможны два варианта операторов, причем эти операторы с разными приоритетами. Приоритетность выполнения логических операторов: or > xor > and > || > && > ! Иногда в условиях удобно использовать скобки для явного задания приоретета:

<php
   $flag1 = true;
   $flag2 = true;
   $flag3 = false;
   if( $flag1 && $flag2 || $flag3)
   {
      echo "<p>Условие истинно<p>";
   }
   else
   {
      echo "<p>Условие ложно<p>";
   }
?>

Результатом будет вывод фразы «Условие истинно», так как согласно приоритету исполнения сначала выполняется оператор &&, так как оба флага равны true – возвращается true, затем это выражение сравнивается с $flag3 (true || $flag3) – что возращает тоже true, так как одно из сравниваемых равно true.

Если же мы запишем

<php
   $flag1 = true;
   $flag2 = true;
   $flag3 = false;
   if($flag1 && ($flag2 || $flag3))
   {
      echo "<p>Условие истинно<p>";
   }
   else
   {
      echo "<p>Условие ложно<p>";
   }
?>

результатом будет «Условие ложно».

Вообще программисты не любят запоминать порядок приоритетов, поэтому для того чтобы Ваш код легко читался (в том числе и Вами) лучше всегда использовать скобки. Т.е. в первом скрипте лучше записать if(($flag1 && $flag2) || $flag3) – тогда сразу становиться понятно, что имеется ввиду.

Иногда нужно проверить условие безальтернативно, например, на ложность или истинность. Допустим, функция (func()) возвращает истину или ложь и в зависимости от этого нужно вывести на страничку те или иные теги. Например, функция mysql_query($query) – возвращает true если запрос к базе данных mySQL, размещённый в строке $query успешно выполнился и false – в противном случае.

Если Вам нужно среагировать только на удачное обращение, Вы можете записать:

<php
   if(mysql_query($query))
   {
      echo "<p>Данные успешно занесены в базу данных.<p>";
   }
?>

Если Вам нужно среагировать только на не удачные обращения, Вы, конечно, можете записать:

<php
   if(mysql_query($query))
   {}
   else
   {
      echo"<p>Данные не были занесены в базу данных.<p>";
   }
?>

Но это не элегантный, запутывающий способ – здесь самое время воспользоваться оператором отрицания: !, применение которого к переменной меняет её значение с true на false, а false на true:

<php
   if(!mysql_query($query))
   {
      echo"<p>Данные не были занесены в базу данных.<p>";
   }
?>

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru