Как разделяются инструкции в языке php. PHP основы

💖 Нравится? Поделись с друзьями ссылкой

Последнее обновление: 1.11.2015

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

Программа или скрипт на PHP, как правило, находится в файле расширением .php . Хотя разработчики могут также вставлять код php и в файлы с расширениями .html/.htm .

Когда пользователь обращается к скрипту в адресной строке браузера, набирая, например, http://localhost:8080/display.php , то веб-сервер передает его интерпретатору PHP. Затем интерпретатор обрабатывает код и генерирует на его основе html-разметку. И затем сгенерированный html-код отправляется пользователю.

Документ PHP может содержать как разметку html, так и код на языке php. Для перехода от разметки html к коду php используются теги , между которыми идет код php. Данные теги служат указанием интерпретатору, что их содержимое надо интерпретировать как код php, а не разметку html.

Также можно использовать краткую версию тегов: . Для этого в файле php.ini надо изменить значение short_open_tag = Off на short_open_tag = On

Рассмотрим простейший скрипт на php:

Веб-сайт Привет мир!

"; echo "2 + 2 = " . (2+2); ?>

После обработки файла интерпретатор сформирует следующую разметку:

Веб-сайт

Привет мир!

2 + 2 = 4

Здесь использованы две инструкции echo "

Привет мир!

" и echo "2 + 2 = " . (2+2) , который выводят определенное значение на страницу. Каждая отдельная инструкция в PHP завершается точкой с запятой.

В каком случае выполняется блок действий цикла
for (expr1; expr2; expr3) {
// блок действий
}

√ если второе выражение (expr2) вычисляется как true
если первое выражение (expr1) вычисляется как true
если третье выражение (expr3) вычисляется как true

Вывести на экран все элементы массива $arr = array(4,3,2,1);?
√ foreach ($arr as $a) echo «$a «;

for ($i=1; $i<$arr; $i++) echo $arr[$i] .»»;

√ $i=0;
while ($arr[$i]) {
echo $arr[$i] .»»;
$i++;
}

Дан массив $arr. Вывести на экран третий элемент массива, если он равен числу 3.
if ($arr == 3) echo $arr;
?>

if ($arr == 3) echo $arr;
?>

if ($arr = 3) echo $arr;
?>

Дан массив $arr. Вывести на экран четвертый элемент массива, если он эквивалентен строке «4».
if ($arr == «3») echo $arr;
?>

if ($arr === «4») echo $arr;
?>

if ($arr == «4») echo $arr;
?>

Дана команда :
if ($var) echo «Hello»;
else echo «Bye»;
В каком случае на экран будет выведено слово «Bye»?

√ если $var === false
если $var == «true»
√ если $var == «»

Дана команда: if(!$var) echo «Hello»; В каком случае на экран будет выведено слово «Hello»?
если $var == true
√ если $var преобразуется к логическому false
√ если $var = 0

Для чего может использоваться PHP?
для создания операционных систем
√ для создания скриптов, выполняющихся в командной строке
√ для создания клиентских GUI-приложений

Для чего не может использоваться PHP?
√ для создания операционных систем
для создания скриптов, выполняющихся в командной строке
для создания клиентских GUI-приложений

Известно, что настройки PHP можно сохранять/изменять не только в php.ini, но и в самих PHP скриптах, в файлах.htaccess и в файле настроек сервера httpd.conf. Где можно установить значение опции register_globals?
в скрипте пользователя
в php.ini, в скрипте пользователя или в файле.htaccess
√ в php.ini, в файле.htaccess или в httpd.conf

Известно, что настройки PHP можно сохранять/изменять не только в php.ini, но и в самих PHP скриптах, в файлах.htaccess и в файле настроек сервера httpd.conf. Где можно установить значение опции session.auto_start?
√ в скрипте пользователя
√ в php.ini или httpd.conf
√ в файле.htaccess

Известно, что настройки PHP можно сохранять/изменять не только в php.ini, но и в самих PHP скриптах, в файлах.htaccess и в файле настроек сервера httpd.conf. Где можно установить значение опции user_dir?
в скрипте пользователя
√ только в php.ini или httpd.conf
в файле.htaccess

Как встраивается PHP в HTML-код?
√ с помощью тегов ‘
√ с помощью тегов ‘
с помощью тегов ‘<$’ и ‘$>’

Как задаются комментарии в языке PHP?
√ // строка комментариев
√ /* несколько строк комментариев */
/ несколько строк комментариев /
** строка комментариев **

Как можно задать массив в языке PHP?
√ $arr = array(«a»,»b»,»c»);
√ $arr = «a»;
$arr («0″=> «a»);
$arr[«a»,»b»,»c»] = «q»;

Как можно задать строку в языке PHP?
√ с помощью двойных кавычек: $var = «это строка»;
с помощью открывающего символа ‘<<<‘ и закрывающего ‘>>>’:
$var = <<< это строка >>>;
√ с помощью одинарных кавычек: $var = ‘это строка’;
√ heredoc-синтаксисом:
$var = <<

Как получить значение константы с именем CONS в языке PHP?
$CONS
define(«CONS», true);
√ CONS
√ constant(«CONS»)

Как присваивается значение константе в языке PHP?
√ define(«CONS»,»text»);
√ define(«CONS»,»text», true);
CONS = «text»
constant(«CONS») = «text»

Как присваивается значение переменной в языке PHP?
√ $var = 1;
var_name = «text»;
$12as = 12;

Как разделяются инструкции в языке PHP?
√ с помощью символа ‘;’
с помощью символа ‘#’
с помощью символа ‘ с помощью символа пробела

Какие из операторов if записаны правильно с точки зрения синтаксиса?
√ if ($par == «») {
echo «Some text»;
$par +=1;
}

√ if ($par == «») :
echo «Some text»;
$par +=1;
endif;

if ($par = «») {
echo «Some text»;
$par +=1;
} else: echo «Another text»;
endif;

Какие из операторов switch записаны правильно с точки зрения синтаксиса?

case «1»: echo «1»;
break;
case 2: echo 2;
break;
endswitch;

1: echo «1»;
2: echo 2;
}


case «1»: echo «1»;
case 2: echo 2;
default: echo 3;
}

Какие из утверждений относительно оператора include верны?
√ include используется для включения в программу содержимого другого файла
√ include выполняет код указанного в нем файла столько раз, сколько раз этот оператор встречается в программе
файл, включаемый с помощью include, должен быть правильным HTML-файлом

Какие из утверждений относительно оператора require верны?
√ require используется для включения в программу содержимого другого файла
при использовании внутри условных блоков require не нужно заключать в фигурные скобки
√ require выполняет код указанного в нем файла только один раз

Какие из циклов while записаны правильно с точки зрения синтаксиса?
echo $a;
$a++;
endwhile;

√ while ($a < $b):
echo $a;
$a++;
endwhile;

√ while ($a < $b){
echo $a;
$a++;
}

Какие парадигмы программирования поддерживает PHP?
√ объектно-ориентированную
√ процедурную
Функциональную

Какие шаги обязательно нужно проделать для того чтобы установить web-сервер Apache с помощью программы установщика?
√ запустить программу установки, согласиться с лицензией, задать имя домена, имя сервера, e-mail администратора, выбрать тип установки, выбрать папку для установки сервера, запустить процесс инсталляции

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

запустить программу установки


for ($j=1; 😉
{
$i = round (9/$j);
switch ($i)
{
case 5: echo «+»;
break;
case 9: echo «-«;
break;
case 3: echo «!»;
break 2;
default: echo $i;
break;
}
$j++;
}
?>
___________

ошибка синтаксиса
√ -+!
+-!
бесконечный цикл

Каким будет результат выполнения следующей программы
for ($j=1; ;)
{
$i = round (9/$j);
switch ($i)
{
case 5: echo «+»;
break;
case 9: echo «-«;
break;
case 3: echo «!j=$j,»;
continue 2;
default: echo $i;
break;
}
$j++;
}
?>
____________

ошибка синтаксиса
-+!
+-!
√ бесконечный цикл

Какой оператор обозначает равенство значений в языке PHP?
===
√ ==
=
:=

Когда вычисляется значение первого (expr1) и второго (expr2) выражений в цикле
for (expr1; expr2; expr3) {
// блок действий
}

expr1 – один раз в начале цикла, expr2 – один раз после завершения всех итераций цикла

expr1 – каждый раз в начале очередной итерации цикла, expr2 – каждый раз в конце итерации цикла

√ expr1 – один раз в начале цикла, expr2 – каждый раз в конце итерации цикла

Написать программу, которая выводит «жирными» буквами (тег ) строку «Добро пожаловать!» с использованием языка PHP.
echo «Добро пожаловать!»;
?>


echo «Добро пожаловать!»;
?>

echo «Добро пожаловать!»;
?>

Отметьте скалярные типы данных, которые имеются в языке PHP?
√ string
text
√ boolean
resource
√ float

С помощью какого оператора можно выполнять разные действия в зависимости от условия?
√ if
for
√ switch

С помощью какой конструкции можно выполнять периодически блок действий до тех пор, пока верно условие?
√ c помощью цикла while
c помощью условного оператора if
√ c помощью цикла for

Чем отличается оператор break от оператора continue?
√ break заканчивает выполнение текущего цикла, а continue – текущей итерации цикла

break используется для принудительной остановки циклов, а continue – для условных операторов

continue не может быть вызван с дополнительным числовым аргументом, а break – может

Чем отличается скрипт на языке PHP от скрипта на языке JavaScript?
ничем не отличаются
способом встраивания в HTML-код
√ скрипт на языке JavaScript обрабатывается клиентом, а PHP-скрипт – сервером

Чем отличаются операторы require и include?
ничем
√ в случае возникновения ошибки include выдает предупреждение, а require – фатальную ошибку
require нельзя использовать внутри циклов, а include – можно

Чем цикл while отличается от цикла do..while?
ничем
√ блок действий цикла do..while гарантированно выполняется один раз
while выполняет блок действий только один раз

Чему будет равна переменная $result в результате выполнения следующей программы
$value = array(«0″,»»,»1″);
foreach ($value as $v) {
if (!$v) $result = true;
else $result = false;
}
?>

√ Array( => true => true => false)
Array( =>true =>true => true)
false, false, true

Что мы получим в результате обработки интерпретатором файла index.php?
7. Файл vars.php:
$a = 1;
?>
Файл index.php:
for ($I=0; $I < 3; $I++)
{
include(«vars.php»);
echo $a++;
}
?>
________
12
123
1234
√ 111

Файл
Файл vars.php:
$a++;
?>

Файл index.php:
$a = 0;
for ($I=0; $I < 3; $I++)
{
require(«vars.php»);
echo $a;
}
?>
__________
√ 123
0
1
ошибку

Файл index . php : php $ a =
Файл index.php:
$a = 0;
for ($I=0; $I < 3; $I++)
{
if (file_exists(«vars.php»)) require(«vars.php»);
echo $a;
}
?>
________
123
√ 000
1
Ошибку

Что нужно сделать для того, чтобы настроить PHP для работы с сервером Apache (PHP устанавливается как серверный модуль)?
добавить в httpd.conf строки:


AddModule mod_php4.c

√ установить в php.ini переменные doc_root, user_dir и extension_dir и добавить в httpd.conf строки:
LoadModule php4_module c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php .phtml
AddModule mod_php4.c

установить в php.ini переменные doc_root, user_dir и extension_dir и добавить в httpd.conf строки:
ScriptAlias /php/ «c:/php/»
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php «/php/php.exe»

Что нужно сделать, чтобы получить в браузере строку: «PHP работает: привет»
Вы создали php файл вида:
PHP работает:
if (1 < 0) echo «привет»;
?>

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

Что такое корень сервера Apache и где он находится по умолчанию (для windows систем)?
√ корень сервера это директория, файлы которой обрабатываются сервером. Для windows систем он находится в «C:/Program Files/Apache Group/Apache/htdocs»

это директория, в которой находятся все PHP скрипты сервера. Для windows систем он находится в «C:/Program Files/Apache Group/Apache/htdocs»

это директория, в которой находятся все документы, которые должен обрабатывать сервер. Для windows систем он находится в «C:/Program Files/Apache Group/Apache/»

Что такое пользовательская директория сервера и где она находится по умолчанию (для windows систем)?
√ это директория, выделенная пользователю для личных нужд, файлы которой обрабатываются сервером, если он получает запрос типа ~user. Находится в «C:/Program Files/Apache Group/Apache/users/»

это директория, выделенная пользователю для личных нужд, файлы которой обрабатываются сервером. Находится в «C:/Program Files/Apache Group/Apache/htdocs/users/»

это директория, выделенная пользователю для личных нужд, файлы которой никогда не обрабатываются сервером. Находится в «C:/Program Files/Apache Group/Apache/users/»

это директория, выделенная пользователю для личных нужд, файлы которой обрабатываются сервером, если он получает запрос типа ~user. Находится в «C:/Program Files/Apache Group/Apache/htdocs/users/»

Общие понятия

Язык PHP специально предназначен для веб-программирования. PHP сочетает достоинства языков C и Perl и при этом весьма прост в изучении и обладает значительными преимуществами перед традиционными языками программирования.

Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl.

Программист С очень быстро освоит язык PHP и сможет использовать его с максимальной эффективностью.
В принципе, в PHP есть практически все операторы и функции , имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других...

Цель данного раздела - краткое ознакомление с основами синтаксиса языка PHP. Более подробную информацию по конкретным составляющим синтаксиса PHP вы найдете в соответствующих разделах.

PHP и HTML

Cинтаксис любого языка программирования гораздо легче "почувствовать" на примерах, нежели используя какие-то диаграммы и схемы. Поэтому приведем пример простейшего скрипта на PHP:



Пример

echo "Привет, я - скрипт PHP!" ;
?>


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

Обратите внимание, что HTML-код корректно обрабатывается интерпретатором PHP.

Начало сценария вас может озадачить: разве это сценарий? Откуда HTML-тэги и ? Вот тут-то и кроется главная особенность (кстати, чрезвычайно удобная) языка PHP: PHP-скрипт может вообще не отличаться от обычного HTML-документа.

Идем дальше. Вы, наверное, догадались, что сам код сценария начинается после открывающего тэга и заканчивается закрывающим ?> . Итак, между этими двумя тэгами текст интерпретируется как программа, и в HTML-документ не попадает. Если же программе нужно что-то вывести, она должна воспользоваться оператором echo.

Итак, PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных и ?> , выводится в браузер непосредственно. В этом и заключается главная особенность PHP, в отличие от Perl и C, где вывод осуществляется с помощью стандартных операторов.

Разделение инструкций

Инструкции разделяются также как и в C или Perl - каждое выражение заканчивается точкой с запятой.

Закрывающий тег (?>) также подразумевает конец инструкции, поэтому два следующих фрагмента кода эквиваленты:

echo "Это тест" ;
?>

Комментарии в PHP скриптах

Написание практически любого скрипта не обходится без комментариев.

PHP поддерживает комметарии в стиле "C", "C++" и оболочки Unix. Например:

echo "Это тест" ; // Это однострочный комментарий в стиле c++
/* Это многострочный комментарий
еще одна строка комментария */
echo "Это еще один тест" ;
echo "Последний тест" ; # Это комментарий в стиле оболочки Unix
?>

Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними.

Это пример.


Заголовок вверху выведет "Это пример".

Будьте внимательны, следите за отсутствием вложенных "C"-комментариев, они могут появиться во время комментирования больших блоков:

/*
echo "Это тест"; /* Этот комментарий вызовет проблему */
*/
?>

Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после // ?> БУДЕТ напечатан: ?> выводит из режима PHP и возвращает в режим HTML, но // не позволяет этого сделать.

Переменные в PHP

Имена переменных обозначаются знаком $ . То же самое "Привет, я - скрипт PHP! " можно получить следующим образом:

$ message = "Привет, я - скрипт PHP!" ;
echo $ message ;
?>

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

PHP поддерживает восемь простых типов данных:

Четыре скалярных типа:

Boolean (двоичные данные)
- integer (целые числа)
- float (числа с плавающей точкой или "double")
- string (строки)

Два смешанных типа:

Array (массивы)
- object (объекты)

И два специальных типа:

resource (ресурсы)
NULL ("пустые")

Существуют также несколько псевдотипов:

Mixed (смешанные)
- number (числа)
- callback (обратного вызова)

Подробно о типах данных в PHP

Выражения в PHP

Основными формами выражений являются константы и переменные. Например, если вы записываете "$a = 100", вы присваиваете "100" переменной $a:

В приведенном примере $a - это переменная, = - это оператор присваивания, а 100 - это и есть выражения. Его значение 100.

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

$x = 7;
$y = $x;

В первой строке рассмотренного примера выражением является константа 7, а во второй строке - переменная $x, т.к. ранее ей было присвоено значение 7. $y = $x также является выражением.

Подробно о выражениях в PHP вы найдете

Операторы PHP

Оператором называется нечто, состоящее из одного или более значений (выражений, если говорить на жаргоне программирования), которое можно вычислить как новое значение (таким образом, вся конструкция может рассматриваться как выражение).

Примеры операторов PHP:

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

$a = ($b = 4 ) + 5 ; // результат: $a установлена значением 9, переменной $b присвоено 4.

?>

Комбинированные операторы:

$a = 3 ;
$a += 5 ; // устанавливает $a значением 8, аналогично записи: $a = $a + 5;
$b = "Hello " ;
$b .= "There!" ; // устанавливает $b строкой "Hello There!", как и $b = $b . "There!";

?>

Строковые операторы:

$a = "Hello " ;
$b = $a . "World!" ; // $b содержит строку "Hello World!"

$a = "Hello " ;
$a .= "World!" ; // $a содержит строку "Hello World!"
?>

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

Подробную информацию по операторам PHP вы найдете .

Управляющие конструкции языка PHP

Основными конструкциями языка PHP являются:

  1. Условные операторы (if, else);
  2. Циклы (while, do-while, for, foreach, break, continue);
  3. Конструкции выбора (switch);
  4. Конструкции объявления (declare);
  5. Конструкции возврата значений (return);
  6. Конструкции включений (require, include).

Примеры конструкций языка PHP:

if ($a > $b ) echo "значение a больше, чем b" ;
?>

Приведенный пример наглядно показывает использование конструкции if совместно с оператором сравнения ($a > $b).

В следующем примере если переменная $a не равна нулю, будет выведена строка "значение a истинно (true), то есть показано взаимодействие условного оператора (конструкции) if с логическим оператором:

if ($a ) echo "значение a истинно (true) " ;
?>

А вот пример цикла while:

$ x = 0 ;
while ($ x ++< 10 ) echo $ x ;
// Выводит 12345678910
?>

Информацию по всем управляющим конструкциям PHP вы можете получить

Пользовательские функции в PHP

В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют два вида подпрограмм: процедуры и функции.

В PHP такими подпрограммами являются.

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

Приведем пример пользовательской функции на PHP:

function funct () {
$a = 100 ;
echo "

$a

" ;
}
funct ();

?>

Сценарий выводит 100:

Пользовательским функциям в PHP можно передавать аргументы и получать возвращаемые функциями значения.

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

Встроенные (стандартные) функции PHP

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

ООП и PHP

PHP имеет достаточно хорошую поддержку объектно-ориентированного программирования (ООП).

В PHP можно создавать классы различных уровней, объекты и достаточно гибко ими оперировать.

Вот пример PHP класса и его использования:

// Создаем новый класс Coor:
class Coor {
// данные (свойства):
var $ name ;

// методы:
function Getname () {
echo "

John

" ;
}

}

// Создаем объект класса Coor:
$ object = new Coor ;
// Получаем доступ к членам класса:
$ object -> name = "Alex" ;
echo $ object -> name ;
// Выводит "Alex"

Есть еще вопросы или что-то непонятно - добро пожаловать на наш

Синтаксис PHP заимствован непосредствено из C. Java и Perl также повлияли на синтаксис данного языка.

Переход из HTML

Есть три способа выхода из HTML и перехода в "режим PHP кода":

Разделение инструкций

Инструкции (утверждения) разделяются также как в C или Perl - точкой с запятой.

Закрывающий тэг (?>) тоже подразумевает конец утверждения, поэтому следующие записи эквивалентны:

Типы переменных

PHP поддерживает переменные следующих типов:

  • integer - целое
  • double - число с дробной частью
  • string - строковая переменная
  • array - массив
  • object - объектная переменная
  • pdfdoc - PDF-документ (только при наличии поддержки PDF)
  • pdfinfo - PDF-инфо (только при наличии поддержки PDF)

Тип переменной обычно не устанавливается программистом; вместо этого, он определяется PHP во время выполнения программы, в зависимости от контекста в котором данная переменная используется.

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

Учтите, что переменная может вести себя по разному в определенных ситуациях, в зависимости от того, какой тип определен для нее в данное время. Более подробно это описано в разделе .

Инициализация переменной

Для инициализации переменной в PHP вы просто присваиваите ей значение. Для большинства переменных это именно так; для массивов и объектных переменных, однако, может использоваться несколько иной механизм.

Инициализация Массивов

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

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

$names = "Jill"; // $names = "Jill" $names = "Jack"; // $names = "Jack"

Как в C и Perl, элементы массива нумеруются начиная с 0, а не с 1.

Инициализация объектов

Для инициализации объектной переменной используйте новое предписание для сопоставления данного объекта объектной переменной.

Class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar -> do_foo ();

Область Переменной

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

$a = 1; /* глобальная область */ Function Test () { echo $a; /* ссылка на переменную локальной области */ } Test ();

Этот скрипт не выдаст что-либо на выходе, поскольку инструкция echo относится к локальной версии переменной $a, значение которой присваивается не внутри этой области. Вы можете заметить, что здесь имеется некоторое отличие от языка C, в том что глобальные переменные в C автоматически действуют и внутри функций, если только они не переписываются локальными определениями. Это может вызвать некоторые проблемы, т.к. по неосторожности можно изменить глобальную переменную. В PHP глобальные переменные должны быть продекларированы глобально внутри функции, если предполагается их использование в данной функции. Например:

$a = 1; $b = 2; Function Sum () { global $a, $b; $b = $a + $b; } Sum (); echo $b;

Вышеописанный скрипт выдаст значение "3". Поскольку $a и $b декларируются глобально внутри функции, ссылки на данные переменные трактуются как ссылки на их глобальные версии. Нет ограничений на количество глобальных переменных, которыми можно манипулировать внутри функции.

Вторым способом доступа к переменным из глобальной области является использование специального опеределяемого PHP массива $GLOBALS. При этом предыдущий пример может быть записан как:

$a = 1; $b = 2; Function Sum () { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Sum (); echo $b;

Массив $GLOBALS является ассоциативным массивом, в котором имя глобальной переменной является ключом, а значение этой переменной является значением элемента массива.

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

Function Test () { $a = 0; echo $a; $a++; }

Эта функция совершенно бесполезна практически, поскольку каждый раз при ее вызове она устанавливает $a в 0 и выводит "0". Выражение $a++ , которое увеличивает значение переменной, так же бесполезно, поскольку при выходе из функции переменная $a исчезает. Для придания дееспособности функции подсчета, которая не теряла бы нить текущего счета, переменная $a декларируется как статическая:

Function Test () { static $a = 0; echo $a; $a++; }

Теперь, каждый раз при вызове функции Test() она будет выводить значение $a и увеличивать его.

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

Function Test () { static $count = 0; $count++; echo $count; if ($count < 10) { Test (); } $count--; }

Изменяемые переменные

Иногда бывает удобно давать переменным изменяемые имена. Такие имена могут изменяться динамически. Обычная переменая устанавливается так:

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

С этой точки зрения, две переменных определены и сохранены в символьном дереве PHP: $a с содержимым "hello" и $hello с содержимым "world". Так, инструкция:

Echo "$a ${$a}";

осуществляет то же самое, что и инструкция:

Echo "$a $hello";

а именно, обе они выводят: hello world .

Чтобы использовать изменяемые переменные с массивами, необходимо решить проблему неоднозначности. Это означает, что если вы пишете $$a, то синтаксическому анализатору необходимо знать, имеете ли вы в виду использовать $a как переменую, или вы предполагаете $$a как переменную а как индекс этой переменной. Синтаксис для разрешения подобной неоднозначности такой: ${$a} для первого случая и ${$a} для второго.

Переменные вне PHP

HTML Формы (GET и POST)

Когда программой-обработчиком формы является PHP-скрипт, переменные этой формы автоматически доступны для данного скрипта PHP. Например, рассмотрим следующую форму:

Пример 5-2. Простая переменная формы

Name:

При активизации формы PHP создаст переменную $name , значением которой будет то содержимое, которое было введено в поле Name: данной формы.

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

Если PHP-атрибут track_vars включен, через установку конфигурации или директивой , тогда переменные, активизированные посредством методов POST или GET, будут также находиться в глобальных ассоциативных массивах $HTTP_POST_VARS и $HTTP_GET_VARS соответственно.

Имена переменных РИСУНКА АКТИВИЗАЦИИ

При активизации (запуске) формы можно использовать рисунок (изображение) вместо стандартной кнопки запуска, в тэге подобном этому:

Когда пользователь нажимает кнопку мыши где-либо над таким рисунком, сопровождающая форма передается на сервер с двумя дополнительными переменными, sub_x и sub_y. Они содержат координаты места нажатия кнопки мыши пользователем внутри данного рисунка. Можно отметить, что практически, реальные имена переменных передаваемые браузером, содержат точку вместо символа подчеркивания, но PHP конвертирует точку в элемент подчеркивания (underscore) автоматически.

HTTP Кукисы

PHP очевидным образом поддерживает HTTP кукисы, как это определено в . Кукисы являются механизмом хранения данных в удаленном браузере, используемым для поддержки процедуры обмена или идентификации ответа пользователя. Кукисы можно устанавливать используя функцию . Кукисы являются частью заголовка HTTP, поэтому функция должна вызываться прежде чем какие-либо передаваемые данные посылаются браузеру. Это такое же ограничение, как и для функции . Любые кукисы, посылаемые вам клиентом, автоматически преобразовываются в переменные PHP, также как данные методов GET и POST.

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

SetCookie ("MyCookie", "Testing", time()+3600);

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

Пример 5-4. Пример функции SetCookie

$Count++; SetCookie ("Count", $Count, time()+3600); SetCookie ("Cart[$Count]", $item, time()+3600);

Переменные окружения

PHP автоматически создает переменные окружения, как и обычные переменные.

Echo $HOME; /* Показывает переменную окружения HOME, если она установлена. */

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

Директивы конфигурации сервера

Изменение типа

PHP не требует явного определения типа при объявлении переменной, тип переменной определяется по контексту в котором она используется. То есть, если вы присваиваете строковое значение переменной var , var становится строкой. Если затем присвоить переменной var значение целого (числа), то она станет целым.

Примером автоматического преобразования типа в PHP может служить оператор сложения "+". Если какой-либо из оперендов является числом с дробной частью (тип double), то затем все операнды оцениваются как double и результат будет иметь тип double. Иначе, эти операнды будут интерпретированы как целые (integers) и результат будет так же иметь тип integer. Отметим, что при этом НЕ меняются типы самих операндов, меняется только оценка этих операндов.

$foo = "0"; // $foo является строкой (ASCII 48) $foo++; // $foo является строкой "1" (ASCII 49) $foo += 1; // $foo сейчас является целым (2) $foo = $foo + 1.3; // $foo сейчас имеет тип double (3.3) $foo = 5 + "10 Little Piggies"; // $foo является целым (15) $foo = 5 + "10 Small Pigs"; // $foo является целым (15)

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

«PHP основы» – второй урок учебника PHP. В этом уроке мы более детально взглянем на грамматику PHP: научимся разделять инструкции и создавать комментарии.

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

Основы PHP: Разделение инструкций.

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

Для отделения одной команды от другой необходимо использовать специальные символы – разделители. В PHP эту роль выполняет символ «; «.

Символ разделения должен находиться в конце каждой инструкции за рядом некоторых исключений, например в конце программы перед символом ?> не обязательно ставить «; «

Внимательно посмотрите на приведенный пример. В нем два вызова одного и того же оператора при одинаковых условиях происходят с «; » и без «; «, но несмотря на это, программа не выдает сообщения об ошибке. Связанно это с тем, что используется единственный оператор в программе, а как мы уже говорили, перед ?> можно опустить символ разделения.

Использование комментариев в PHP.

В любом языке программирования поддерживается возможность оставлять комментарии (HTML, CSS, JavaScript, C++ и т.д.). Говорить о необходимости использования комментариев, я думаю не стоит т.к. это неоднократно обсуждалось в других учебниках этого сайта.

Как и в других языках, в PHP имеется поддержка как однострочных, так и многострочных комментариев. Для создания однострочного комментария используются символы // :

// Это однострочный комментарий
// А это его продолжение

Для создания многострочного комментария используется контейнер /*…*/ :

/* Это многострочный комментарий,
он может вместить внутри себя
абсолютно любое количество строк */

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

В следующем уроке мы поговорим об основных типах данных, используемых в PHP, остановившись на каждом из них максимально подробно.

Рассказать друзьям