Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP для начинающих - N4


Информационный Канал Subscribe.Ru

PHP для начинающих Выпуск N4
Тема: Типы данных и выражения Ведущий рассылки: Дмитрий
В выпуске:
  1. Введение
  2. Типы данных в PHP
  3. Логический оператор IF
  4. Функции работы с переменными
  5. В следующем выпуске

Введение

Здравствуйте, дорогие друзья!

В первую очередь хочу поздравить вас с Новогодними праздниками: наступившим 2003 годом, Рождеством и Старым новым годом! Хочу пожелать вам счастья, успехов и удачи во всех делах.

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

У меня часто спрашивают, есть ли у рассылки сайт и где можно посмотреть какую-нибудь дополнительную информацию по PHP. Да, сайт действительно есть. Однако это не совсем сайт рассылки. Дело в том, что я сейчас занимаюсь одним проектом, который мне передал мой коллега. Сайт очень большой и интересный, посвященный программированию - содержит множество книг, исходников (в том числе и по PHP). Существует он не один год и довольно популярен. Однако у моего знакомого в последнее время совершенно не хватает возможностей им заниматься. Ну, собственно, я и выразил желание перенять этот ресурс, чем в последнее время и занимаюсь :)) Но сайт еще не готов. Сейчас разрабатывается новый дизайн, идет полная реорганизация структуры, а также создание ПО, на котором будет функционировать весь сайт (а, надо сказать, база данных там очень большая).

Сайтом я стал заниматься еще до создания рассылки. Сказать честно, не планировал в оперативном порядке связывать его с рассылкой (хотя понимал, что рассылке сайт будет нужен). Но, столкнувшись с несколькими вопросами по поводу сайта рассылки я понял, что это желательно сделать как можно быстрее. Чтож, хочу объявить, что в ближайшем времени сайт будет готов и у рассылки появиться постоянное место жительства, где можно будет найти архив, загрузить книги и статьи по теме, скрипты, а также пообщаться в форуме.

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


Типы данных в PHP

Итак, сегодня у нас тема "Типы данных". Небольшая и несложная, но, надо сказать, жизненно важная тема. На основе типов строиться вся работа с данными в программе, что является, собственно говоря, самой главной функцией PHP.

Переменные в PHP могут быть различных типов. Тип переменной определяет данные, которые в ней содержаться - например, числа или строки. Соответственно, тип также определяет действия, которые можно с переменной производить - например, можно складывать числа друг с другом, но нельзя складывать число со строкой (точнее можно, но это не сложение в прямом смысле и результат уже не будет уже числом). Итак, давайте разберемся, какие существуют основные типы данных.

Числа

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

<?
$a = 123; // $a - это целое число
$b = 1.27; // $b - это дробное число
?>

Как вы видите, в дробном числе целая часть от дробной отделяется точкой.

Основные действия, которые можно производить с числами:

  • = Приравнивание. Означает занесение значения в переменную. Например, $a = 322;
  • + Сложение.
  • - Вычитание.
  • * Умножение.
  • / Деление.
  • % Остаток от деления.
Эти действия могут использовать в любом месте, где происходит работа с числами, в том числе и в параметрах функций. Обратите внимание, что в математических выражениях PHP соблюдает правила алгебры относительно порядка действий. То есть умножение (произведение) или деление обладает особым приоритетом. Например:

<?
$a = 12-4*5; // здесь $a будет равно -8.
$a = (12-4)*5; // а здесь $a уже равно 40.
echo $a;
?>

Давайте рассмотрим более конкретный пример работы с числами:

<?
$a = 10;
echo $a%3; // выводим остаток от деления $a на 3, то есть единицу.
$a = 15; // значение $a изменилось на 15.
$a = $a-5%3; // что сейчас находиться в $a ?

$b = 100;
echo $b / 9; // посмотрите, это уже дробный результат

/* можно использовать алгебру и
просто в качестве параметра к функции */

echo (12%5) * 7;
echo 12/9*1.2-($a+sin(180));
?>

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

  • += - прибавление
  • -= - вычитание
  • *= - умножение
  • /= - деление
  • %= - получение остатка
Использование подобных конструкций сводится к следующему:

<?
$a = 10;
$a += 2; // теперь $a=12
?>

Здесь строчка $a += 2; означает $a = $a + 2;
То есть сокращенные действия позволяют присваивать значение переменной одним действием, "сворачивая выражение". Например, мы хотим присвоить к переменной $a произведение $b*$c. Это можно было бы написать как $a = $a + ($b*$c), но проще это сделать как $a += $b*$c.

Попробуйте попрактиковаться с этими действиями, очень полезно уметь ими пользоваться. Ну а сейчас давайте напишем более полезный пример, который будет кое-что для нас считать. Пусть это будет вычисление процентов от числа.

Вспомните, как это делается в математике? Пусть есть переменная $a, от которой нужно посчитать кол-во процентов, которое записано в переменной $percent. Мы должны поступить так: умножить количество процентов на само число и разделить получившийся результат на 100. Посмотрим как выглядит подобный алгоритм в лаконичных терминах PHP:

<?
$a = 355; // любое число, от которого мы считаем процент
$procent = 10; // сколько процентов считать?
echo "$procent% от $a = ".($procent*$a)/100;
?>

Обратите внимание, до чего же короткое получается выражение. Все сводиться к третьей строке кода, которая выводит нам числа, из которых мы и считаем сам результат (в этом примере, вывод будет такой: 10% от 355 = 35.5). Думаю, на этой строке стоит остановиться подробнее.

Что делает уже известная вам функция echo()? Сначала она выводит строку, которая оформлена в двойных кавычках (" ... "), обрабатывая внутри нее переменные. Именно в двойных кавычках могут соседствовать обычные символы и переменные, значения которых в этом случае выводятся на экран. Если вы напишите это в одинарных кавычках, то значения переменных обрабатываться не будут (в этом и есть разница двойных и одинарных кавычек). Далее эта конструкция скрепляется точкой (что, в данном случае, равносильно запятой) с алгебраическим выражением, которое считает процент. Т.о. мы получаем короткую и простую конструкцию, которая одновременно и выводит и считает все, что нам нужно.

Стоит отметить, что здесь сильно проявляется сходство PHP с языком Си. Если вы знакомы с этим языком, то подобные сокращения и "сжатый код" вас не удивят. Но если имеете опыт работы с другими языками (например Паскаль с его строгостью типов и выражений) или не имеете опыта программирования вообще, придется попрактиковаться в лаконичности кода. Это позволяет сильно оптимизировать программу и сократит размеры файла. Чтобы было понятнее, о чем я говорю, я хочу привести пример, как выглядела бы эта программа в Паскале (конечно, в терминах PHP):

<?
$a = 355;
$procent = 10;
echo $procent, "% от ", $a, " = ";
$a = ($procent*$a) / 100;
echo $a;
?>

Как видите, это немного больше. Расписано, что называется, по шагам.

Строки

Переменная типа "строка" содержит в себе набор любых символов. Оформляются строки двойными или одинарными кавычками:

<?
$a = ""; // это задает пустую строку или обнуляет существующую
$a1 = "dmitry@eserver.ru"; // мой Email :)
$a2 = 'a'; // строка в одинарных кавычках
$a3 = "Email: $a1"; // это уже выражение. В двойных кавычках можно использовать переменные, помните? Строка $a3 теперь равна "Email: dmitry@eserver.ru".
?>

Со строками, естественно, нельзя производить математических действий (нельзя ведь прибавить к букве "a" букву "z"), однако в некотором роде можно это делать совместно с числами. Здесь работает высокоэффективное преобразование типов, поистине доступное только в PHP. При этом действует такой принцип: если в строке записано число, например "15", то PHP будет производить арифметическое сложение строки и числа и возвращать число. Если строка содержит что-то кроме цифр, то результатом будет строка. Вот пример:

<?
$s = "5"; // $s - строка
$a = 10; // $a - число
echo $s.$a; // здесь просто выводим две переменных
echo $s,$a; // а можно и через запятую

echo $s+$a; // а здесь мы уже прибавляем строку к числу. Результат - 15.

$s = "Строка";
echo $s+$a; // здесь результат - уже строка, то есть "Строка10"

?>

Строки можно "склеивать" между собой, что в программировании называется "конкатенацией". Данная операция обозначается точкой "." или знаком "+".

<?
$s = "Строка1";
$s1 = "Строка2";
$s = $s.$s1; // "склеивание" строк через точку. Теперь $s = "Строка1Строка2";
$s = $s+$s1; // можно и через плюс
$s = $s+"Строка"; // а так можно прибавить и просто параметр

$s1 .= $s;// как и в числах, действует сокращенная конкатенация. Это означается $s1 = $s1.$s;
?>

Также в PHP можно обращаться к любому символу строки, указав его порядковый номер в квадратных скобках. Например, мы можем обратиться к символу "т" в переменной $s = "Строка", указав $s[1];
Обратите внимание, что символы в строке нумеруются с нуля, то есть символ "С" будет указываться как $s[0]; Пример:

<?
$s = "Строка1";
echo $s1[0];

$s[0] = $s[1]; // меняем символы в строке
echo $s; // смотрим результат
?>

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

  • StrLen($s) - вычисляет длину строки. Например: echo StrLen("12345"); выведет "5".
  • Substr($s, $start, $len) - возвращает часть строки $s, начиная с символа $start (не забывайте, что символы в строке нумеруются с нуля!) до символа $start+$len. Например:

    <?
    $s = "Пример строки";
    $s1 = substr($s, 7, 7); // $s1 будет равно "строки"
    echo $s1;
    ?>

  • StrToLower($s) - преобразует все символы строки в строчные буквы. Например, echo StrToLower("АБвг Abc"); выведет "абвг abc";
  • StrToUpper($s); - преобразует все символы строки в символы верхнего регистра. Например, echo StrToUpper("АБвг Abc"); выведет "АБВГ ABC";


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

Очень часто в программе возникает необходимость выполнить проверку какого-нибудь условия. Например, является ли переменная $a числом или что больше $b или $c. Проверка логических условий осуществляется с помощью конструкции IF и логических действий, которые ему в этом помогают.

Конструкция IF состоит из следующих частей:

if (выражение) { < действие> } else { < действие> }

Расшифровывается это следующим образом. Сначала указывается оператор if, который означает начало логической проверки. Далее в круглых скобках ( ... ) указывается выражение, именно оно и является условием проверки. После него идет действие (например, вывод строки) или блок действий (например, какие-нибудь расчеты), которые выполняются, если выражение после if истинное.

Эти две части выражения являются обязательными. Однако помимо обязательной части существует дополнительная, указываемая при желании. Это конструкция else { <действие> }. Суть ее состоит в следующем: если выражение в if неверно и условие не выполняется, управление передается действию (или блоку действий), которое указано после else. По-русски это можно представить таким образом:

ЕСЛИ (выражение) ТО {действия} ИНАЧЕ {действия}

Пример: Пусть нам нужно выяснить, что больше - $a или $b. Если $a - вывести строку "A больше B", если нет - строку "B больше A". Выглядеть это будет следующим образом:

<?
$a = 10;
$b = 15;

if ($a>$b) echo '$a больше, чем $b';
else echo '$b больше, чем $a';
?>

Как видите, в качестве выражения для проверки указано ($a>$b). Это звучит как "Если $a больше $b, то ... иначе ...". Символ ">" должен быть знаком вам из математики. Он обозначает "больше" и является в PHP одним из логических операторов.

Далее, есть определенная особенность в действиях после IF и ELSE. Если после IF или ELSE стоит всего одно действие (например, вывод строки), то оно указывается как есть. Если блок из нескольких действий - то они обязательно берутся в круглые скобки { ... }. Например, пусть мы проверяем $a>$b и, в случае, если больше, то вычитаем из $a переменную $b и выводим на экран. Если нет - прибавляем и выводим. Вот как это выглядит:

<?
$a = 10;
$b = 15;

if ($a>$b) {

$a -= $b; // вычитаем, то есть $a = $a - $b;
echo '$a = '.$a;
}
else {
$a += $b; // прибавляем, то есть $a = $a + $b;
echo '$a = '.$a;
}
?>

Cписок логических операторов, которые можно в любом количестве и в любой комбинации использовать в PHP:

  • < - "меньше"
  • > - "больше"
  • <= - "меньше или равно"
  • >= - "больше или равно"
  • ! - "не"
  • && - "и"
  • || - "или"
  • == - "равно"
  • != - "не равно"
Думаю, с первого раза некоторые из операторов могут показаться непонятными, поэтому остановлюсь на них подробнее. С симолами строгого и нестрогого равенства, думаю, проблем не возникнет, тем более что вы уже увидели их работу в пред. примере.

Оператор РАВНО (==)

Обратите внимание, в "равно" используется два знака равенства. Именно два:

if ($f==$c) ...

Это означает "ЕСЛИ $f РАВНО $C". Логическое "равно" очень сильно отличается от знака "приравнивание", обозначаемого одним знаком равенства. "Приравнивание" (=) означает занесение какого-либо значения в переменную, а логическое "равно" (==) именно проверку истинности равенства. Не забывайте про это. Если вы напишите в IF один знак равенства, то это будет ошибкой. И если напишите $a == $b+$c - это тоже будет ошибкой.

Оператор НЕ (!) и НЕ РАВНО (!=)

Оператор "!" означает отрицание или логическое "НЕ". Например, можно проверить, имеет ли переменная значение таким способом: if (!$a) {...}. Это означает ЕСЛИ (НЕ $a), ТО.... Соответственно, оператор "не равно" имеет этот символ (!=) Вот как можно проверить, равна ли одна переменная другой: if ($a != $b) { ... }.

Операторы И (&&) и ИЛИ (||)

Эти операторы обозначают логическое "И" и "ИЛИ". Например, нам нужно выполнить какие-либо действия, если переменная $a больше $b и меньше $c. Тогда мы выполним такую проверку:

if (($a>$b) && ($a<$c)) { ... что-нибудь сделаем ... }

Обратите внимание на круглые скобки в выражении - две отдельные проверки обособлены. Хоть в данном случае это и не обязательное условие, но выделение двух частей выражения позволяет навести порядок и придать проверке осмысленный вид.


Функции работы с переменными

Есть также набор полезных функций, который работают с переменными. Вот несколько самых главных:

  • Sqrt($a) - вычисляет квадратный корень из $a
  • Sin($a) - вычисляет синус $a в радианах.
  • Cos($a) - вычисляет косинус $a в радианах.
  • Tan($a) - вычисляет тангенс $a в радианах.
  • Abs($a) - вычисляет абсолютное значение аргумента (т.е. делает его положительным).
  • Exp($a) - e, в степени $a
  • GetType($a) - возвращает тип переменной. Возвращаемое значение это строка, содержащая одно из значений: "integer" - переменная явл. целым числом, "double" - дробным числом, "string" - это строка.
  • SetType($a,type) - эта функция устанавливает тип переменной. Параметр type - один из, "integer", "double" или "string".
  • IsSet($a) - проверяет, имеет ли указанная переменная значение. Если она не была инициализирована, возвращает "0", если в ней что-то записано - "1". Удобная функция для проверки существования переменных.
  • UnSet($a) - сбрасывает значение параметра $a, т.е. попросту обнуляет его.
  • Rand($min,$max) - возвращает случайное число, которое находиться в диапазоне между $min и $max. Например, функция Rand(0,10) вернет случайное число между нулем и десятью.
  • getRandMax() - возвращает максимальное число, которое можно получить с помощью функции Rand(). Обратите внимание, функция не имеет параметра, она просто возвращает значение.
Подробнее останавливаться на этих функциях, я думаю, не стоит - они очень простые и в случае, если вам захочется подробнее с ними разобраться, вам не составит труда сделать это самостоятельно, написав пару примеров с ними.


В следующем выпуске

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

С уважением, Дмитрий.
Email: dmitry@eserver.ru

Ведущий рассылки: Дмитрий. dmitry@eserver.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное