Определение при помощи array()



array ([key] => value, [key1] => value1, ... )

Языковая конструкция array () принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в PHP типа.

Числовой ключ массива часто называют индексом. Индексирование массива в PHP начинается с нуля. Значение элемента массива можно получить, указав после имени массива в квадратных скобках ключ искомого элемента. Если ключ массива представляет собой стандартную запись целого числа, то он рассматривается как число, в противном случае – как строка. Поэтому запись $a["1"] равносильна записи $a[1], так же как и $a["-1"] равносильно $a[-1].

<?php$books = array ("php" => "PHP users guide", 12 => true);echo $books["php"];//выведет "PHP users guide"echo $books[12];//выведет 1?>

Если для элемента ключ не задан, то в качестве ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано. Начиная с PHP 4.3.0, если максимальный ключ – отрицательное число, то следующим ключом массива будет ноль ( 0 ).

<?php// массивы $arr и $arr1 эквивалентны$arr = array(5 => 43, 32, 56, "b" => 12);$arr1 = array(5 => 43, 6 => 32,         7 => 56, "b" => 12);?>

 

Если использовать в качестве ключа TRUE или FALSE, то его значение переводится соответственно в единицу и ноль типа integer. Если использовать NULL, то вместо ключа получим пустую строку. Можно использовать и саму пустую строку в качестве ключа, при этом ее надо брать в кавычки. Так что это не то же самое, что использование пустых квадратных скобок. Нельзя использовать в качестве ключа массивы и объекты.

Определение с помощью синтаксиса квадратных скобок

Создать массив можно, просто записывая в него значения. Как мы уже говорили, значение элемента массива можно получить с помощью квадратных скобок, внутри которых нужно указать его ключ, например, $book["php"]. Если указать новый ключ и новое значение, например,$book["new_key"]="new_value", то в массив добавится новый элемент. Если мы не укажем ключ, а только присвоим значение $book[]="new_value", то новый элемент массива будет иметь числовой ключ, на единицу больший максимального существующего. Если массив, в который мы добавляемзначения, еще не существует, то он будет создан.

<?$books["key"]= value; // добавили в массив               // $books значение                     // value с ключом key$books[] = value1; /* добавили в массив                 значение value1 с                 ключом 13, поскольку                 максимальный ключ у                 нас был 12 */?>

Для того чтобы изменить конкретный элемент массива, нужно просто присвоить ему с его ключом новое значение. Изменить ключ элемента нельзя, можно только удалить элемент (пару ключ / значение ) и добавить новую. Чтобы удалить элемент массива, нужно использовать функцию unset () .

<?php$books = array ("php" =>           "PHP users guide",           12 => true); $books[] = "Book about Perl"; // добавили элемент               // с ключом (индексом)               // 13 это эквивалентно                     // $books[13] =               // "Book about Perl";$books["lisp"] = 123456; /* Это добавляет к массиву новый       элемент с ключом "lisp" и       значением 123456 */unset($books[12]); // Это удаляет элемент              // c ключом 12 из массива unset ($books); // удаляет массив полностью?>

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

<?php$arr = array ("a","b","c"); /* Создаем массив                    со значениями                    "a", "b" и "c".                    Поскольку ключи                    не указаны, они                    будут 0,1,2                    соответственно */print_r($arr); // выводим массив (и ключи,          // и значения)unset($arr[0]);unset($arr[1]);unset($arr[2]);          // удаляем из него все значения print_r($arr); // выводим массив (и ключи,                // и значения)$arr[] = "aa"; // добавляем новый элемент           // в массив.                 // Его индексом (ключом)           // будет 3, а не 0print_r($arr); $arr = array_values($arr); // переиндексируем                // массив $arr[] = "bb"; // ключом этого элемента          // будет 1print_r($arr);?>

Тип Null

Специальное значение NULL говорит о том, что переменная не имеет значения.

Переменная считается NULL, если:

· ей была присвоена константа NULL ( $var = NULL );

· ей еще не было присвоено какое-либо значение;

· она была удалена с помощью unset ().

Существует только одно значение типа NULL – регистронезависимое ключевое слово NULL.

Условные операторы Оператор if Это один из самых важных операторов многих языков, включая PHP. Он позволяет выполнять фрагменты кода в зависимости от условия. Структуру оператора if можно представить следующим образом: if (выражение) блок_выполнения Здесь выражение есть любое правильное PHP-выражение (т.е. все, что имеет значение). В процессе обработки скрипта выражение преобразуется к логическому типу. Если в результате преобразования значение выражения истинно ( True ), то выполняется блок_выполнения. В противном случае блок_выполнения игнорируется. Если блок_выполнения содержит несколько команд, то он должен быть заключен в фигурные скобки { }. Правила преобразования выражения к логическому типу: 1. В FALSE преобразуются следующие значения: o логическое False o целый ноль ( 0 ) o действительный ноль ( 0.0 ) o пустая строка и строка "0" o массив без элементов o объект без переменных (подробно об объектах будет рассказано в одной из следующих лекций) o специальный тип NULL 2. Все остальные значения преобразуются в TRUE. <?$names = array("Иван","Петр","Семен"); if ($names[0]=="Иван") {     echo "Привет, Ваня!"; $num = 1; $account = 2000;}if ($num) echo "Иван первый в списке!";$bax = 30;if ($account > 100*$bax+3)     echo "Эта строчка не появится     на экране, так как условие не выполнено";?> Оператор else Мы рассмотрели только одну, основную часть оператора if . Существует несколько расширений этого оператора. Оператор else расширяет if на случай, если проверяемое в if выражение является неверным, и позволяет выполнить какие-либо действия при таких условиях. Структуру оператора if , расширенного с помощью оператора else , можно представить следующим образом: if (выражение) блок_выполненияelse блок_выполнения1 Эту конструкцию if...else можно интерпретировать примерно так: если выполнено условие (т.е. выражение=true ), то выполняем действия из блока_выполнения, иначе – действия из блока_выполнения1. Использовать оператор else не обязательно. Посмотрим, как можно изменить предыдущий пример, учитывая необходимость совершения действий и в случае невыполнения условия. <?$names = array("Иван","Петр","Семен"); if ($names[0]=="Иван") {     echo "Привет, Ваня!"; $num = 1; $account = 2000;} else { echo "Привет, $names[0]. А мы ждали Ваню :(";}if ($num) echo "Иван первый в списке!";else echo "Иван НЕ первый в списке?!";$bax = 30;if ($account > 100*$bax+3)     echo "Эта строка не появится на экране, так как условие не выполнено";     else echo "Зато появится эта строка!";?> Оператор elseif Еще один способ расширения условного оператора if – использование оператора elseif . elseif – это комбинация else и if . Как и else , он расширяет if для выполнения различных действий в том случае, если условие, проверяемое в if , неверно. Но в отличие от else , альтернативные действия будут выполнены, только если elseif-условие является верным. Структуру оператора if , расширенного с помощью операторов else и elseif, можно представить следующим образом: if (выражение) блок_выполненияelseif(выражение1) блок_выполнения1...else блок_выполненияN Операторов elseif может быть сразу несколько в одном if-блоке. Elseif-утверждение будет выполнено, только если предшествующее if-условие является False, все предшествующие elseif-условия являются False, а данное elseif-условие – True. <?$names = array("Иван","Петр","Семен"); if ($names[0]=="Иван") {     // если первое имя в массиве Иван echo "Привет, Ваня!";}elseif ($names[0] == "Петр"){     // если первое имя     // не Иван, а Петр echo "Привет, Петя!";}elseif ($names[0] == "Семен"){     // если первое имя не     // Иван, не Петр, а Семен echo "Привет, Сеня!";}else {     // если первое имя не Иван,     // не Петр и не Семен echo "Привет, $names[0]. А ты кто такой?";}?>

Альтернативный синтаксис

PHP предлагает альтернативный синтаксис для некоторых своих управляющих структур, а именно для if , while, for , foreach и switch . В каждом случае открывающую скобку нужно заменить на двоеточие ( :), а закрывающую – на endif;, endwhile; и т.д. соответственно.

Например, синтаксис оператора if можно записать таким образом:

if(выражение): блок_выполнения endif;

Смысл остается тем же: если условие, записанное в круглых скобках оператора if , оказалось истиной, будет выполняться весь код, от двоеточия " :" до команды endif;. Использование такого синтаксиса полезно при встраивании php в html-код.

<?php$names = array("Иван","Петр","Семен"); if ($names[0]=="Иван"): ?>Привет, Ваня!<?phpendif; ?>

 

Если используются конструкции else и elseif , то также можно задействовать альтернативный синтаксис:

<?php$a=1;if ($a == 5): print "a равно 5"; print "...";elseif ($a == 6): print "a равно 6"; print "!!!";else: print "a не равно ни 5, ни 6";endif;?>

Оператор switch

Еще одна конструкция, позволяющая проверять условие и выполнять в зависимости от этого различные действия, – это switch . На русский язык название данного оператора можно перевести как "переключатель". И смысл у него именно такой. В зависимости от того, какое значение имеет переменная, он переключается между различными блоками действия. switch очень похож на оператор if...elseif...else или набор операторов if . Структуру switch можно записать следующим образом:

switch (выражение или переменная){case значение1: блок_действий1break;case значение2: блок_действий2break;...default: блок_действий_по_умолчанию}

В отличие от if , здесь значение выражения не приводится к логическому типу, а просто сравнивается со значениями, перечисленными после ключевых слов case ( значение1, значение2 и т.д.). Если значение выражения совпало с каким-то вариантом, то выполняется соответствующий блок_действий – от двоеточия после совпавшего значения до конца switch или до первого оператора break , если таковой найдется. Если значение выражения не совпало ни с одним из вариантов, то выполняются действия по умолчанию ( блок_действий_по_умолчанию ), находящиеся после ключевого слова default. Выражение в switch вычисляется только один раз, а в операторе elseif – каждый раз, поэтому, если выражение достаточно сложное, то switch работает быстрее.

Для конструкции switch , как и для if , возможен альтернативный синтаксис, где открывающая switch фигурная скобка заменяется двоеточием, а закрывающая – endswitch; соответственно.

Циклы

В PHP существует несколько конструкций, позволяющих выполнять повторяющиеся действия в зависимости от условия. Это циклы while , do..while , foreach и for . Рассмотрим их более подробно.

While

Структура:

while (выражение) { блок_выполнения }

либо

while (выражение): блок_выполнения endwhile;<?//эта программа напечатает все четные цифры    $i = 1; while ($i < 10) {   if ($i % 2 == 0) print $i;     // печатаем цифру, если она четная         $i++;     // и увеличиваем $i на единицу }?>

Do... while

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

Структура:

do {блок_выполнения} while (выражение);<?// эта программа напечатает число 12, несмотря на то // что условие цикла не выполнено$i = 12; do{   if ($i % 2 == 0) print $i;     // если число четное, то печатаем его   $i++;     // увеличиваем число на единицу }while ($i<10)?>

For

Это самые сложные циклы в PHP. Они напоминают соответствующие циклы C.

Структура:

for (выражение1; выражение2; выражение3) {блок_выполнения}

либо

for (выражение1; выражение2; выражение3): блок_выполнения endfor;

Здесь, как мы видим, условие состоит сразу из трех выражений. Первое выражение выражение1 вычисляется безусловно один раз в начале цикла. В начале каждой итерации вычисляется выражение2. Если оно является True, то цикл продолжается и выполняются все команды блока_выполнения. Если выражение2 вычисляется как False, то исполнение цикла останавливается. В конце каждой итерации (т.е. после выполнения всех командблока_выполнения ) вычисляется выражение3.

Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это значит, что цикл должен выполняться неопределенное время (в этом случае PHP считает это выражение всегда истинным). Это не так бесполезно, как кажется, ведь цикл можно останавливать, используя оператор break .

Например, все четные цифры можно вывести с использованием цикла for таким образом:

<?phpfor ($i=0; $i<10; $i++){ if ($i % 2 == 0) print $i;     // печатаем четные числа}?>

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

<?php$i=2; // задаем начальное значение счетчикаfor ( ; ; ){ if ($i>=10) break;   // если $i больше или равно 10,       // то прекращаем работу цикла if ($i % 2 == 0) print $i;   // если число четное,       // то печатаем его$i++; // увеличиваем счетчик на единицу}?>

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

<?phpfor ($i=0; $i<10; print $i, $i++) /* Если блок_выполнения не содержит команд или содержит только одну команду, фигурные скобки, в которые он заключен, можно опускать*/

?>

 

Foreach

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

Синтаксис:

foreach ($array as $value) {блок_выполнения}

либо

foreach ($array as $key => $value) {блок_выполнения}

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

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

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

<?php$names = array("Иван","Петр","Семен"); foreach ($names as $val) { echo "Привет, $val <br>";     // выведет всем приветствие }foreach ($names as $k => $val) {     // кроме приветствия,     // выведем номера в списке, т.е. ключи echo "Привет, $val !   Ты в списке под номером $k <br>"; }?>

 


Дата добавления: 2019-02-22; просмотров: 234; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!