Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Хитрость с ключами. Как еще можно создать массив. Все способы создания массива. Многомерный массив. Конструкция if-else. Сокращенный синтаксис




Хитрость с ключами

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

<? php    //Укажем ключи в явном виде:     $a = [1 => 'пн', 2 => 'вт', 3 => 'ср', 4 => 'чт', 5 => 'пт', 6 => 'сб', 7 => 'вс'];     echo $a[3]; //выведет 'ср'? >

На самом деле нет необходимости расставлять ключи всем элементам - достаточно только первому элементу поставить ключ 1.

Если у второго элемента не будет ключа, PHP поставит его автоматически, причем следующий по порядку.

А следующим номером будет как раз-таки число 2, так как предыдущий элемент имел ключ 1 (неважно, что мы сами его поставили, а не PHP автоматически).

Давайте поправим наш массив:

<? php    //Укажем ключи в явном виде:     $a = [1 => 'пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'];     echo $a[3]; //выведет 'ср'? >

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

Как еще можно создать массив

Объявление массива с помощью команды [] не является единственным способом его создания.

Можно просто присвоить значения элементам массива, не объявляя его через array (PHP нас поймет и сам создаст массив):

<? php    //Можно не писать [], а просто присвоить значения его элементам:     $a[0] = 1;     $a[1] = 2;    $a[2] = 3;     var_dump($a); //с помощью var_dump убеждаемся в том, что $a – это массив? >

Естественно, ключи могут быть не только числовыми, но и текстовыми:

<? php    //Ключи могут быть строками:     $a['Коля'] = 100;     $a['Вася'] = 200;     $a['Петя'] = 300;     var_dump($a); //с помощью var_dump убеждаемся в том, что $a – это массив? >

Кроме того, можно сделать так, что PHP сам добавит ключи (начиная с нуля и так далее). Для этого мы оставим квадратные скобки пустыми: $a[] = 1, а PHP сам добавит ключ. Пример:

<? php    //Мы не пишем ключи в квадратных скобках    $a[] = 100; //100 будет иметь ключ 0    $a[] = 200; //200 будет иметь ключ 1    $a[] = 300; //300 будет иметь ключ 1    var_dump($a); //массив $a будет иметь вид [0=> 100, 1=> 200, 2=> 300]? >

 

Все способы создания массива

<? php    //Можно просто его объявить:     $a = [];     //Можно его сразу и заполнить:     $a = [1, 2, 3];     //Можно не писать [], а просто присвоить значения его элементам:     $a[0] = 1;     $a[1] = 2;     $a[2] = 3;     //Можно даже не писать ключи, тогда PHP добавит их автоматически, начиная с нуля:     $a[] = 1;     $a[] = 2;     $a[] = 3; ? >

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

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

Давайте сделаем массив студентов $students, который будет содержать два подмассива: студенты мужского пола и женского:

<? php    //Многомерный массив студентов:     $a = [            'boys' => ['Коля', 'Вася', 'Петя'],             'girls' => ['Даша', 'Маша', 'Лена'],     ];? >

Чтобы вывести какой-либо элемент из многомерного массива следует писать уже не одну пару [ ], а две: $a['boys'][0] – так мы выведем 'Коля'

 

Конструкция if-else

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

То есть нам нужно иметь возможность спросить у PHP 'Если'.

Например так: если эта переменная меньше нуля, то вывести 'отрицательно', иначе (то есть если она больше нуля) вывести 'положительно'.

В PHP для таких вопросов предназначена конструкция if, которая позволяет выполнять определенный код при выполнении какого-либо условия:

<? php

    if (логическое выражение) {

            Этот код выполниться,

            если логическое выражение верно (то есть равно true)

    }

    else

    {

            Этот код выполнится,

            если логическое выражение неверно (то есть равно false)

    }

? >

Обратите внимание на то, что блок else не обязателен.

Логическое выражение представляет собой тот самый вопрос, который мы хотим задать PHP. Например, чтобы спросить 'переменная $a больше нуля' мы напишем так: $a > 0.

Примеры работы:

<? php

    $a = 3;

 

    /*

            Если переменная $a больше нуля, то выведи 'верно',

            иначе (если меньше или равна нулю) выведи 'неверно'

    */

    if ($a > 0) {echo 'Верно! '; } else {echo 'Неверно! '; } //выведет 'Верно! '

? >

<? php

    $a = - 3;

 

    /*

            Если переменная $a больше или равна нулю, то выведи 'верно',

            иначе (если меньше нуля) выведи 'неверно'

    */

    if ($a > = 0) {echo 'Верно! '; } else {echo 'Неверно! '; } //выведет 'Неверно! '

? >

Сокращенный синтаксис

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

<? php

    //Полный вариант:

    if ($a == 0) {echo 'Верно! '; } else {echo 'Неверно! '; }

 

    //Уберем скобки после if:

    if ($a == 0) echo 'Верно! '; else {echo 'Неверно! '; }

 

    //Уберем скобки после else:

    if ($a == 0) {echo 'Верно! '; } else echo 'Неверно! ';

 

    /*

            Уберем скобки и после if, и после else

            (обратите внимание на точку с запятой - она осталась):

    */

    if ($a == 0) echo 'Верно! '; else echo 'Неверно! ';

? >

Равенство по значению и типу

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

Почему так? Потому что одиночное равно зарезервировано за присваиванием. Смотрите пример:

<? php

    $a = 0;

 

    /*

            Если переменная $a равна нулю, то выведи 'верно',

            иначе (если не равна нулю) выведи 'неверно'

    */

    if ($a == 0) echo 'Верно! '; else echo 'Неверно! '; //выведет 'Верно! '

? >

А следующий пример работать будет не так, как мы думаем:

<? php

    $a = 0;

 

    /*

            Мы думаем оно работает так:

                     если переменная $a равна нулю, то выведи 'верно',

                     иначе (если не равна нулю) выведи 'неверно'.

 

            На самом деле оно работает так:

                     переменной $a присвоить 1,

                     если удалось присвоить - то выведи 'верно',

                     иначе (если не удалось присвоить) выведи 'неверно'.

    */

 

    if ($a = 1) echo 'Верно! '; else echo 'Неверно! '; //всегда будет выводить 'Верно! '

? >

Кроме оператора == существует еще и оператор ===. Их различие в том, что === сравнивает не только по значению, но и по типу, а == сравнивает только по значению.

Чтобы полностью разобраться в этом, внимательно изучите примеры:

<? php

    $a = '0'; //переменная $a представляет собой строку, а не число 0

    if ($a == 0) echo 'Верно! '; else echo 'Неверно! ';

 

    /*

            Выведет 'Верно! ', так как проверяется только значение, но не тип.

            Поэтому '0' равен 0.

    */

? >

<? php

    $a = '0'; //переменная $a представляет собой строку, а не число 0

    if ($a === 0) echo 'Верно! '; else echo 'Неверно! ';

 

    /*

            Выведет 'Неверно! ', так как строка '0'

            не равна числу 0 при сравнении по типу.

    */

? >

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...