3. Введение в язык PHP

Опубликовал в рубрике Лекции.

PHP (PHP: Hypertext Preprocessor − «PHP: препроцессор гипертекста») − язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров. Входит в LAMP − «стандартный» набор для создания веб-сайтов (Linux, Apache, MySQL, PHP (Python или Perl)).

В области программирования для Сети, PHP − один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии PHP. PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать своё собственное расширение и подключить его. Существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Интерпретатор PHP подключается к веб-серверу либо через модуль, созданный специально для этого сервера (например, для Apache или IIS), либо в качестве CGI-приложения.

Кроме этого, он может использоваться для решения административных задач в операционных системах UNIX, GNU/Linux, Microsoft Windows, Mac OS X и AmigaOS. Однако в таком качестве он не получил распространение, отдавая пальму первенства Perl, Python и VBScript.

В настоящее время PHP используется сотнями тысяч разработчиков.

Название PHP − рекурсивная аббревиатура, означающая «PHP: Hypertext Preprocessor» (ранее акроним расшифровывался как «Personal Home Page Tools»). Изначально PHP создавался в качестве надстройки над Perl для облегчения разработки веб-страниц.

Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.

Имена переменных начинаются с символа $, тип переменной объявлять не нужно. В отличие от имён функций и классов, имена переменных чувствительны к регистру. Переменные обрабатываются в строках, заключённых в двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора <<<).

PHP рассматривает переxод на новую строку как пробел, так же как HTML и другие языки со свободным форматом. Инструкции разделяются с помощью точки с запятой (;), за исключением некоторых случаев.

PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).

Обращение к переменным производится с помощью символа $, за которым следует имя переменной. Данная конструкция может быть применена также для вызова функций, методов и т.п., имя которых совпадает с содержимым переменной. Например:

$a = ‘I am a’; //записываем значение в переменную

echo $a;          //Выводим содержимое переменной а

$b = ‘a’;

echo $$b;         //Выводим содержимое переменной а

$c = ‘function_name’;

$c();             //Вызовется функция function_name

$d = ‘Class_name’;

$obj = new $d();  //Создастся объект класса Class_name

$obj->$b;         //Обращение к полю b объекта

$obj->$c();       //Вызов метода function_name объекта

3.1 Типы данных в языке PHP. Переменные

Переменные в РНР обозначаются при помощи знака доллара («$»), после ко­торого следует имя переменной. Имена переменных являются зависимыми от регистра, то есть прописные и строчные буквы в них различаются. Имена пе­ременных подчиняются тем же самым правилам, что и остальные идентифика­торы: имя переменной начинается с буквы или символа подчеркивания и содер­жит произвольное число букв, цифр и символов подчеркивания. Ниже приведен пример создания двух переменных путем присваивания им значений:

<?php

$ variable = 5;

$another variable = $variable;

?>

По умолчанию, переменные присваиваются по значению — выражение спра­ва от оператора присваивания («=») вычисляется, и результат помещается в пе­ременную, заданную слева от оператора присваивания. Это, в частности означа­ет, что если значение одной переменной было присвоено другой переменной, то дальнейшее изменение значений одной из этих переменных не окажет ника­кого влияния на другую. Переменной может быть также присвоена ссылка на другую переменную. Это означает, что в данном случае копирование значе­ний не производится, а изменение значений одной из этих переменных автома­тически отразится и на значении другой переменной. Для обозначения ссылки на переменную используется знак амперсанд («&»), например:

<?php

$variable = 5;

$new variable = &$variable;

$variable = 6;  // Значение $new variable также будет равно 6

?>

3.2 Предопределённые переменные

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

$_GLOBALS. Массив, содержащий перечень глобальных переменных. Ин­дексом массива является имя глобальной переменной.

$_SERVER. Массив параметров web-сервера.

$_GET. Массив переменных, переданных скрипту при помощи метода HTTP GET.

$_POST. Массив переменных, переданных скрипту при помощи метода HTTP POST.

$_COOKIE. Массив переменных, переданных скрипту при помощи cookie.

$_FILES. Список сведений о файлах, которые были загружены на сервер в процессе обработки запроса HTTP POST.

$_ENV. Массив переменных среды операционной системы.

$_REQUEST. Массив переменных, переданных скрипту при помощи мето­дов HTTP GET и PUT, а также при помощи cookie.

$_SESSION. Массив переменных текущего сеанса работы.

3.3 Массивы

$array  [index]   -  value;

$array =  array   (value1,   value2);

$array = array (key1=> value1, key2 => value2);

Массивы являются наборами из нескольких значений, при этом каждому значению ставится в соответствие некоторый индекс. Индекс массива может быть как целочисленным, так и строковым. В случае использования целочис­ленных индексов нумерация элементов массива начинается с 0. Массивы имену­ются точно также, как и переменные, отличительным признаком массива явля­ется использование квадратных скобок после имени массива. Для создания мас­сива достаточно присвоить значение одному из его элементов, например:

$array  [1]   =  «Жизнь прекрасна.»;

Данный код создает массив с именем $array и присваивает его элементу с номером 1 строку «Жизнь прекрасна. ». После этого можно использовать эле­мент массива точно так же, как и обычную переменную, например:

echo   $аггау[1];

Массив со строковыми индексами создается аналогичным образом:

$data ["Иван"] = 123; $data ["Петр"] = 567; $data   ["Леонид"]   = 980;

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

$data  []   = 123;

$data  []   = «Привет»;

$data  []   =  «Здравствуйте»;

В вышеприведенном примере элементу $ data [0] будет присвоено значение 123, элементу $data  [1]   —значение «Привет» и т.д.

Массив может быть также создан при помощи функции array, например:

$data = array  (123,   «Привет»,   «  Здравствуйте «);

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

$data = array (I =>  123,   «Привет»,   » Здравствуйте «);

В этом случае значение 123 будет содержаться в элементе $data [1]   и т.д.

3.4 Условные операторы

if (expression) statement

Оператор if предназначен для условного выполнения фрагментов кода. Вна­чале вычисляется значение условие expression, и если оно истинно, то выпол­няется оператор statement. Если же условие expression ложно, то оператор statement    игнорируется.

Если в зависимости от определенного условия требуется выполнить больше чем один оператор, то требуется использовать составной оператор, который представляет собой последовательность операторов, заключенную в фигурные скобки. В следующем примере сравниваются две переменные, и если $value1 больше, чем $value2, то их значения меняются местами, и выводится соответ­ствующее сообщение:

<?php

if   ($valuel > $value2)   {

echo «$valuel > $value2\n»;

echo «Значения меняются местами. » ;

$temp = $valuel;

$valuel = $value2;

$value2 = $temp;

}

?>

Рассмотрим конструкцию if … else

if (exression)

statement1 else

statement2

Если в зависимости от некоторого условия требуется выполнить один из двух операторов, на помощь приходит оператор else. Если условие expression ис­тинно, то выполняется оператор statement1 если же оно ложно — то оператор statement2. Пример использования оператора else для сравнения значений двух переменных приведен ниже:

<?php

if   ($valuel > $value2)   {

echo «$valuel больше $value2 » ; } else {

echo «$valuel меньше или равно $value2″;

}

?>

Рассмотрим конструкцию elseif

if (expression1)

statement1 elseif(expression2)

statement 2

elseif (expressionN)

statementN else

statementZ

Оператор elseif расширяет функциональность операторов if и else, позво­ляя проверить несколько условий последовательно. Условия expression1, expression2 и т.д. проверяются последовательно, и в случае истинности одного из них выполняется соответствующий оператор statementK. Если же ни одно из условий не выполнено, выполняется оператор statementZ. Ниже приведен пример, в котором выводится результат сравнения двух переменных:

<?php

if   ($valuel > $value2)    {

echo «$valuel больше $value2″ ; }  elseif   ($$valuel == $value2)    {

echo   «$valuel равно $value2″; } else {

echo   «$value1 меньше $value2″;

}

?>

Вместо ключевого слова elseif можно также использовать два слова else   if.

3.5 Оператор switch

switch (expression)

{

case test 1 :

statement 1;

break; case test2:

statement2;

break;

case testN:

statementN;

break; default:

statements;

}

Оператор switсh похож на серию операторов if, в которых одно и то же вы­ражение сравнивается с различными значениями. При совпадении значения выражения с каким-либо значением выполняется соответствующий оператор.

Например, пусть требуется сравнить значение переменной $ехрr с нескольки­ми целыми числами. Для этого может быть использован оператор if:

<?php

if ($expr ==  1)   {

echo «Expr = 1″; }   elseif  ($expr ==   1)   {

echo «Expr = 2 » ; }   elseif   ($expr = = 3)    {

echo «Expr = 3 » ;

}

?>

Та же самая задача может быть решена при помощи оператора switch:

<?php

switch   ( $expr)

{

case   1:

echo «Expr = 1″;

break;

case 2:

echo «Expr = 2″; break;

case   3:

echo «Expr = 3 » ; break;

}

?>

Когда в теле оператора switch обнаруживается оператор case со значением, равным значению выражению expression, выполнение начинается с операто­ра case и продолжается до конца тела оператора switch или до первого встре­ченного оператора break. Если в конце очередного блока после оператора case не будет указан оператор break, выполнение будет продолжено до конца опера­тора switch. Например, имеется следующий оператор switch:

<?php

switch   ($expr)

{

case 1:

echo » Expr = 1″; case 2:

echo » Expr = 2 «; case 3:

echo   » Expr = 3 » ;

}

?>

В том случае, если значение переменной $ехрr равно 1, будут выполнены все три оператора echo.

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

<?php

switch   ($expr)

{

case 1:

echo   «Expr =  1″; break;

case 2 :

echo   «Expr = 2 » ; break;

case 3 :

echo   «Expr =  3 » ; break;

default   :

echo   «Expr не равно ни 1,   ни 2,   ни 3″ ;

}

?>

Этот оператор switch эквивалентен следующему оператору if:

<?php

if   ($expr == 1)   {

echo   «Expr is  1″; }   elseif   ($expr = = 1)    {

echo   «Expr is 2″; }   elseif   ($expr = = 3)    {

echo   «Expr is  3″ ; }  else  {

echo  «Expr не равно ни 1,  ни 2,  ни 3 » ;

}

?>

3.6 Оператор while

while   (expr)   statement

Цикл while является простейшим циклом в РНР. Он позволяет повторять выполнение заданного оператора statement (который может быть составным) до тех пор, пока значение выражения ехрr является истинным (TRUE). Опера­тор statement называется телом цикла. Значение выражения проверяется ка­ждый раз перед выполнением тела цикла, так что если даже если значение изме­нится в середине тела цикла, всё тело цикла будет выполнено до конца. Если значение выражения ехрr является ложным (FALSE) перед началом выполне­ния цикла, то тело цикла не будет выполнено ни разу.

Так же как и в случае с оператором if, для того, чтобы поместить в тело цик­ла несколько простых операторов, их следует объединить в составной при помо­щи фигурных скобок:

<?php

$loop_index = 1; while   ($loop_index <= 10)    { echo  $loop_index++;

}

?>

В этом примере использовался счетчик цикла — переменная $loop_index. Но при использовании цикла whilе наличие счетчика цикла не является обяза­тельным. Например, некоторые функции, например feof (которая возвращает TRUE при достижении конца файла), могут быть использованы для формирова­ния условия цикла while. Ниже приведен пример, иллюстрирующий это:

<?php

$handle = fopen  («file.txt»,   «r») ; while   (!feof   ($handle) )    { $text = fgets   ($handle); echo $text,   «<BR>»;

}

?>

3.7 Оператор do. . .while

do{

sta tement } while   [expr);

Цикл do. . .while очень похож на цикл while, за тем лишь отличием, что значение выражения ехрr проверяется в конце после выполнения тела цикла, а не в начале. Это означает, что тело цикла do. . . while всегда выполняется хотя бы один раз, в отличие от тела цикла while, которое может не выполниться ни разу.

Ниже приведен пример цикла while, тело которого не будет выполнено ни разу:

<?php

$value =10; while ($value < 5) {

$value += 2;

echo $value,   "<BR>";

}

?>

Но при использовании цикла do. . .while его тело будет выполнено мини­мум один раз, поэтому при выполнении следующего примера будет отображена строка «12»:

<?php

$value = 10; do

{

echo  $value,   "<BR>"; $value += 2;

}

while ($value < 5);

?>

3.8 Оператор цикла for

for (expr1; expr2; expr3) statement

Цикл for является наиболее универсальным и часто используемым циклом в РНР. При его выполнении сначала однократно вычисляется выражение exprl. Далее вычисляется значение условия цикла — выражение ехрг2. До тех пор пока оно истинно (TRUE), выполняется тело цикла — оператор statement. После тела цикла вычисляется выражение ехрrЗ, которое обычно используется для увеличения счетчика цикла. Как только условие цикла станет ложным (FALSE), выполнение цикла прекратится.

Ниже приведен пример цикла for, который отображает текст 20 раз:

<?php

for   ($loop_counter = 0;   $loop_counter < 20;   $loop_counter ++ )

{

echo "Этот текст будет отображен 2 0 раз.<BR>";

}

?>

Этот цикл может быть также записан в сокращенной форме, в которой тело цикла будет отсутствовать:

<?php

for   ($loop_counter =  0;   $loop_counter <   20;   echo   "Этот текст будет отображен 20 раз.<ВК>",   $loop_ counter+ + );

?>

3.9 Оператор цикла foreach

foreach  (array _expression as  $value)  statement foreach (array_expression as $key => $value) statement

Цикл foreach предназначен для перебора всех элементов заданного масси­ва. Он предназначен только для обработки массивов, так что если его попытать ся применить к другим объектам, будет выведено сообщение об ошибке.

Первая форма этого цикла осуществляет перебор всех элементов заданного массива array_expression. При каждой итерации значение текущего элемен­та массива заносится в переменную $value, и выполняется тело цикла — опера­тор statement.

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

Ниже приведен пример использования цикла foreach:

<?php

$array = array  ("grapes",   "grapefruit",   "bananas"); foreach   ($array as $value)

{

echo "Текущее значение:   $value\n";

}

?>

Можно также отобразить значение индекса элемента массива: <?php

$array = array  ("grapes",   "grapefruit",   "bananas"); foreach   ($array as $key => $value)

{

echo "Текущий индекс равен $key,   а значение — $value\n";

}

?>

3.10 Функции

function   function_name($argl     [,     $arg2,      . . . ,      [$argN]]])

{

[statement]

[return $retum_value;]

}

Функция представляет собой группу операторов, используемых совместно. Функция может быть вызвана по имени, ей могут быть переданы некоторые дан­ные, и, наконец, функция может вернуть результат. В теле функции может рас­полагаться любой код РНР, включая объявление других функций и даже клас­сов.

Пример описания функции приведен ниже:

function echoer  () {

echo «Доброе утречко ! » ;

}

Вызов функции осуществляется по имени: echoer   ();

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

<?рhр

$vegetables     [0]       =          «пшеница»;

$vegetables     [1]       =          «рожь»;

$vegetables     [2]       =          «ячмень»;

$vegetables    [3] = «овес»;

echoer ($vegetables) ;

function  echoer   ($array)

for   ($index =  0;   $index < count ($array) ;   $index + +) }    echo  «Элемент $index:   «,   $array[$index] ,   «\n»;

}

?>

При выполнении данного кода будут отображены следующие строки:

Элемент 0: пшеница Элемент 1: рожь Элемент 2: ячмень

Элемент 3 : овес

Для возврата значения из функции используется оператор return: return  (value);

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

<?php

function incrementer   ($value) {

return ++$value;

}

?>

Ниже приведен пример использования значения, возвращенного функцией: <?php

echo incrementer(9) ;

function incrementer   ($value) {

return ++$value;

}

?>

3.11 Классы и объекты

class class _name [extends ancestor_name]

{

[access_modifier]    var   variable;

[access_modifier[   function function_name   (argl,   arg2,...   aigN)

{

statement

}

}

Класс представляет собой совокупность переменных и функций, или, в тер­минах объектно-ориентированного программирования (ООП), свойств и мето­дов. Класс является типом данных, поэтому возможно создавать переменные типа класса.

Например, класс Person содержит имя человека и два метода — set_name для присвоения значения имени и get_name для получения сохраненного зна­чения имени.

class Person

{

var  $name;

function set_name  ($text) {

$this->name = $text;

}

function get_name () {

return $this->name;

}

Для создания объекта определенного класса используется оператор new. Опе­ратор new используется только для создания переменных типа класса, он не требуется для создания простых переменных целого, вещественного и осталь­ных скалярных типов.

Например, для создания нового объекта класса Person и сохранения его в переменной с именем $ivan, может быть использован следующий код:

<?рhр

class Person

{

var  $name;

function set_name  ($text) {

$this->name = $text;

}

function get_name () {

}    return $this->name ;

}

$ivan = new Person;

?>

Для доступа к методам объекта класса Person используется оператор «->» (стрелка). Например, для сохранения имени человека может быть использован следующий код:

$ivan = new Person; $ivan->set_name ("Иван") ;

Для получения текущего значения имени используется метод get_name:

$ivan = new Person; $ivan->set_name ("Иван") ;

echo "Имя_человека:   ",  $ivan->get_name (),".";

После выполнения данного фрагмента кода будет отображена следующая строка:

Имя человека: Иван.

Помимо методов, при помощи оператора «->» доступны также и свойства класса, например:

<?php

class Person

{

var  $name;

function set_name  ($text) {

$this->name = $text;

}

function get_name () {

return $this->name ;

}

}

$ivan = new Person;

echo  "Имя человека:  ",   $ivan->name,   ".";

?>

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

function set_name  ($text) {

if   (strlen  ($text)  <= 128)

{

$this->name = $text;

}

}

Для управления внешнего доступа к свойствам и методам класса используются модификаторы доступа (access modifier). Существует три модификатора доступа:

public. Свойство или метод доступно всем. Этот модификатор использует­ся по умолчанию;

private. Свойство или метод доступно только внутри данного класса;

protected. Свойство или метод доступно только внутри данного класса и всех его потомков.

Если свойство или метод объявлены как private, к ним нельзя обратиться извне класса. Например, пусть класс описан следующим образом:

<?php

class Person

{

private $name;

function set_name  ($text)

{

$this->name = $text;

}

function get_name   () {

return $this->name;

}

}

$ivan = new Person;

echo   "Имя человека: ", $ivan->name,".";

?>

При выполнении данного кода будет выведено следующее сообщение об ошибке:

Имя человека:  PHP Fatal error:    Cannot access private property Person::$name in test.php

Метод класса также может быть объявлен как private:

class Person

{

var $name;

private function set_name   ($text) {

$this->name =  $text;

}

function get_name   () {

return $this->name;

}

В данном случае метод sеt_name недоступен для использования за пределами данного класса.

Основные достоинства языка PHP:

имеется большой набор функций для работы со строками;

работа с регулярными выражениями PCRE выполняется функциями с префиксом preg_

работа с базами данных осуществляется посредством модулей php5-mysql для MySQL, php5-pgsql для PostgreSQL и др. Функции этих модулей позволяют открывать соединение, выполнять SQL-запросы к СУБД, получать данные в удобной для обработки виде и т.д. В серьезных проектах рекомендуется использовать модули абстракции базы данных и объектно-реляционные проекции (ORM);

для PHP разработаны средства шаблонирования web-страниц, позволяющие эффективно разделить представление от модели в духе MVC, например Smarty;

Недостатки языка PHP:

1) Низкая скорость работы:

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

2) Несогласованный синтаксис функций и неортогональность:

PHP предоставляет разработчикам большое количество самых разнообразных функций, которые попали в язык из расширений, создаваемых разными группами программистов. В результате синтаксис не согласован, например, часть функций для работы с массивами начинается с array_, другая часть этим префиксом не обладает. Названия части строковых функций начинается с префикса str, другие функции таким префиксом не обладают. В тех же строковых функциях, обрабатываемая строка может передаваться как в качестве первого, так и в качестве последнего аргумента, что требует постоянного обращения к документации. Все это связано с сильным влиянием Perl, в котором неортогональность является частью концепции. Однако, PHP задумывался как промышленный и ортогональный язык и альтернативные наборы функций для решения одних и тех же задач сильно мешают создавать код в едином стиле. К сожалению, проблема скорее всего не будет решена из соображений обратной совместимости. Избыточность языка, возможно, сохраняется из соображений быстродействия, так как реализация возможностей одной функции через другие требует больше времени и/или ресурсов, чем непосредственный вызов "избыточной" функции.

3) Отсутствие обратной совместимости между версиями языка:

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

4) Отсутствие поддержки Unicode в ядре языка:

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

5) Отсутствие многопоточности:

в языке не предусмотрена возможность создания многопоточных приложений. Есть различные обходные решения с использованием curl и сокетов. Для POSIX-совместимых систем можно использовать функции pcntl_*. Следует отметить, что PHP распространен главным образом в области Web-разработки, где зачастую проблему многопоточности берёт на себя Web-сервер.

6) Невозможность прямой работы с возвращаемым массивом:

в языке PHP массив, возвращаемый функцией или методом, необходимо предварительно занести в переменную, чтобы применить оператор […]. Пример:

function odds($N)

{

return range(0, $N, 2);

}

print odds(10)[2]; //ошибка

$tmp = odds(10);

print $tmp[2]; // работает

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

  3 Введение в язык PHP (153,0 Кб, 1 скачиваний)
You do not have permission to download this file.

Метки: