Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы по МИРу.doc
Скачиваний:
2
Добавлен:
28.04.2019
Размер:
572.42 Кб
Скачать
  1. Переменные и типы данных, константы и выражения языка PHP, извлечение данных из полей форм.

Переменные

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

При объявлении переменных в РНР не требуется явно указывать тип переменной, при этом одна и та же переменная может иметь на протяжении программы разные типы.

Переменная инициализируется в момент присваивания ей значения и существует до тех пор, пока выполняется программа. Т.е., в случае web-страницы это означает, что до тех пор, пока не завершен запрос.

Внешние переменные

После того, как запрос клиента проанализирован веб-сервером и передан РНР машине, последняя устанавливает ряд переменных, которые содержат данные, относящиеся к запросу и доступны все время его выполнения. Сначала РНР берет переменные окружения Вашей системы и создает переменные с теми же именами и значениями в окружении сценария РНР для того чтобы сценариям, расположенным на сервере были доступны особенности системы клиента. Эти переменные помещаются в ассоциативный массив $HTTP_ENV_VARS

Константы

Константы объявляются в РНР при помощи функции define(): define(CONSTANT, value)

Первый параметр этой функции – имя константы, второй – её значение. При использовании константы на неё ссылаются по имени:

<?

define(CONSTANT1,15);

echo(CONSTANT1);

?>

Существует функция defined(), которая проверяет, определена ли константа:

<?

define(CONSTANT,"Hello");

if(defined("CONSTANT"))

{

echo("<p>Константа существует</p>");

}

?>

Выражения

Действительно, практически все, что вы пишете в программе — это выражение.

Совершенно точно можно сказать, что у любого выражения есть тип его

значения. Например:

$а=10*20;

$Ь="".(10*20);

echo "$а:",gettype($а)," $b:",gettype($b);

// выведет "200:integer 200:string"

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

Эти выражения чаще всего возникают при применении операторов >, < и (равно), | | (логическое ИЛИ), &&

(логическое И), \ (логическое НЕ) и других. Например:

$а = 10<5; // $a=false

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

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

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

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

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

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

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

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

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

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

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

Типы данных в РНР. Преобразование типов

В РНР существуют набор основных типов данных, которые могут явно указываться при работе с переменными:

Integer (целый)—Используется для целых чисел

Double (двойной точности) — Используется для действительных чисел

String (строковый) — Используется для строк символов

Array (массив) — Используется для хранения нескольких элементов данных одного типа

Object (объект) — Используется для хранения экземпляров классов

Boolean (логический)—Используется для хранения логических (true|false)

Есть функция gettype(), возвращающая тип, который РНР назначил переменной:

<?

$var = "5";

$var1 = 5;

echo(gettype($var));

echo "<br>";

echo(gettype($var1));

?>

В первом случае РНР вернет string, во втором integer.

Существует также функция settype(), которая явно устанавливает тип:

<?

$var = "5";

echo(gettype($var));

settype($var,integer);

echo "<br>";

echo(gettype($var));

?>

Выполнение этого фрагмента кода приведет к такому же результату, как и предыдущего.

Кроме функции settype() преобразование типов в РНР можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путем указания перед переменной ее нового типа, взятого в скобки:

$var = (int)$var;

Соответственно, выполнение следующего кода приведет к тому, что РНР вернет integer:

<?

$var = "5"; // тип string

$var = (int)$var; // преобразуем в int

echo(gettype($var));

?>

2. Управляющие структуры языка php

Управляющие структуры — это языковые структуры, которые позволяют управлять потоком выполнения программы или сценария. Их можно разделить на условные структуры (или структуры ветвления) и структуры повторения, или циклы.

К операторам выбора относят: условный оператор (if...else) и переключатель (switch). Синтаксис условного оператора:

if(condition) statement 1 else statement 2

Условие condition может быть любым выражением. Если оно истинно, то выполняется оператор statement 1. В противном случае выполняется оператор statement 2. Допустима сокращенная форма записи условного оператора, в которой отсутствуют else и оператор statement 2.

<?

$y = 1;

if($y == 1)echo("y=1");

else echo("у!=1");

?>

Проверка дополнительных условий возможна при помощи оператора elseif. Оператор if может включать сколько угодно блоков elseif, но else в каждом if может быть только один. Как правило, в конструкциях if…elseif…else оператор else определяет, что нужно делать, если никакие другие условия не являются true. Однако, вообще говоря, использование оператора elseif довольно сильно ухудшает читабельность кода, и лучше в этом случае пользоваться переключателем (switch).Переключатель switch является наиболее удобным средством для организации ветвления. Синтаксис переключателя таков:

switch(expression) // переключающее выражение

<?

switch($number)

{

case 1:

echo ("one ");

case 3:

echo ("free");

case 5:

echo ("five");

case 7:

echo ("seven");

case 9:

echo ("nine");

break;

default:

echo ("Это не является числом или не входит в диапазон от 1 до 9");

}

?>

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

В PHP определены 4 разных оператора цикла:

1. Оператор while называется оператором цикла с предусловием. Пример:

<?php

$var = 1;

while($var<=5)

{

Echo $var.”<br>”;

$var++

}

?>

2. Этот оператор называется оператором цикла с постусловием. При входе в цикл в любом случае выполняется тело цикла (т.е. цикл всегда будет выполнен хотя бы один раз), затем вычисляется условие, и если оно не равно 0, вновь выполняется тело цикла. В нижеследующем примере ноль всегда будет добавлен в список, независимо от условия (++$i <= $var):

<?

$var = 5;

do

{

Echo $var.”<br>”;

$var++

}

while(++$i <= $var)

?>

3. итерационный цикл

<?

$var = 5;

for ($i = 0; $i <= $var; $i++)

{

Echo $i.”<br>”;

}

?>

4. итерационный цикл foreach:

foreach (array as [$key =>] $value)

{ statements;}

3. Работа с массивами.

В PHP существует 2 метода инициализации массивов

<?

$car[] = "passenger car";

$car[] = "land-rover";

echo($car[1]); // выводит "land-rover"

?>

Индекс массива можно указать явно:

<?

$car[0] = "passenger car";

$car[1] = "land-rover";

echo($car[1]); // выводит "land-rover"

?>

Альтернативный способ определения массивов состоит в использовании конструкции array():

<?

$car = array("passenger car", "land-rover");

echo($car[1]); // выводит "land-rover"

?>

Для явного указания индексов в этом случае применяется оператор =>:

<?

$car = array("passenger car", 5 => "land-rover",

"station-wagon","victoria");

echo($car[0]); echo("<br>"); // выводит "passenger car"

echo($car[5]); echo("<br>"); // выводит "land-rover"

echo($car[6]); echo("<br>"); // выводит "station-wagon"

echo($car[7]); // выводит "victoria"

?>

Индексами массива могут быть и строки:

<?

$car = array("pc" => "passenger car", "lr" => "land-rover");

echo($car["lr"]); echo("<br>"); // выводит "land-rover"

echo($car["pc"]); // выводит "passenger car"

?>

Многомерные массивы:

count()-Эта функция принимает в качестве аргумента массив и возвращает количество элементов в нем. Как понимаете, штука незаменимая когда будем бегать по массиву циклом for().

in_array()-Эта функция ищет в массиве haystack значение needle и возвращает true если оно найдено и false в противном случае.

reset()-Функция reset() устанавливает указатель массива на первый элемент и возвращает значение первого элемента массива.

Сортировка массивов:

sort()-Функция сортировки массива по возрастанию.

Функция sort() воспринимает любой массив как список.

rsort()-Сортировка массива по убыванию.

asort()-Сортировка ассоциативного массива по возрастанию.

Функция asort() сортирует массив по алфавиту (если это строки) или по возрастанию (для чисел). Важное отличие этой функции от функции sort() состоит в том, что при применении функции asort()сохраняются связи между ключами и соответствующими им значениями, чего нет в функции sort() (там эти связи попросту разрываются).

arsort()-Сортировка ассоциативного массива по убыванию.

Эта функция упорядочивает массив по убыванию.

Функции asort() и arsort() сортируют по значениям, а не по ключам

ksort()-Сортировка массива по возрастанию ключей.

В этой функции сортировка осуществляется не по значениям, а по ключам в порядке их возрастания.

krsort()-Сортировка массива по убыванию индексов.

В этой функции сортировка осуществляется не по значениям, а по ключам по убыванию.

array_reverse()-Расстановка элементов массива в обратном порядке.

Связи между ключами и значениями.

shuffle()-Перемешивание элементов массива случайным образом.

natsort()-Выполняет "естественную" сортировку массива.

Работа с курсором (указатель) массива:

Функция reset() производит сброс курсора массива, т.е. устанавливает внутренний курсор массива на начало массива и возвращает значение первого элемента.

Функция end() выполняет действие, обратное функции reset() – переносит курсор в конец массива.

Функция next() производит перенос курсора массива вперед на одну позицию.

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

Функция prev() производит перенос курсора назад на одну позицию.

Функция current() возвращает значение элемента, на котором в данный момент находится курсор массива.

Функция key() возвращает индекс текущего элемента массива.

Функция each() возвращает пару "индекс - значение" текущего элемента массива и сдвигает курсор массива на следующий элемент.