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

Работа вместе с HTML. Вложенные if. Конструкция elseif. Несколько if. Конструкция switch-case. Цикл foreach




Работа вместе с HTML

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

Посмотрите примеры:

<? php

    $a = true;

    if ($a) {

            //Данный HTML код будет виден на экране только если $a равно true

            echo '< p> Здесь выведем какой-то HTML! < /p> ';

    }

? >

Однако, очень часто это может оказаться неудобным, особенно если размеры HTML кода очень большие. Поэтому можно воспользоваться следующим приемом с разрывом PHP:

<? php

    //Пример на работу вместе с HTML

    $a = true;

    if ($a) {

            /*

                     Мы оборвали PHP, но HTML код ниже

                     все равно будет виден на экране только если $a равно true.

            */

   ? >

            < p > Здесь выведем какой - то HTML! < / p >

    <? php

            /*

                     Здесь мы продожаем PHP, открыв скобку <? php

                     и закрываем фигурную скобку от ифа.

            */

    }

? >

Вложенные if

Предположим, нам необходимо спросить у PHP такую вещь: если переменная $a пуста, то вывести 'Введите $a', если не пуста, то проверить - больше нуля $a или нет. Если больше нуля - то вывести 'Больше нуля! ', если меньше - вывести 'Меньше нуля'.

Одной конструкцией if здесь не обойтись, нужно использовать две таким образом, чтобы одна была внутри другой:

<? php

    if (empty($a)) { //если переменная $a пуста

            echo 'Введите $a! ';

    } else { //если переменная $a НЕ пуста

            if ($a > 0) { //спрашиваем, больше ли нуля переменная $a

                     echo 'Больше нуля! ';

            } else {

                     echo 'Меньше нуля! ';

            }

    }

? >

Конструкция elseif

Недостатком конструкции предыдущего примера является большое количество фигурных скобок. Поэтому была изобретена специальная конструкция elseif (пишется слитно! ), которая представляет собой одновременно и else, и начало вложенного if:

<? php

    //Решение предыдущей задачи через конструкцию elseif

    if (empty($a)) {

            echo 'Введите $a! ';

    } elseif ($a > 0) { //одновременно выполняется else для empty($a) и спрашивается больше ли $a нуля

            echo 'Больше нуля! ';

    } else {

            echo 'Меньше нуля! ';

    }

? >

Можно использовать несколько elseif, но злоупотреблять этим не стоит (лучше будет воспользоваться конструкцией switch-case, о которой ниже).

Несколько if

Пусть у нас есть такая задача: сайт поддерживает 3 языка - русский, английский, немецкий. Переменная $lang может принимать 3 значения - 'ru', 'en' и 'de'. В зависимости от значения переменной $lang следует вывести фразу на одном из языков.

Решение: можно было бы воспользоваться вложенными ифами или elseif. Выглядело бы это примерно так:

<? php

    //Решение задачи через elseif – не самое удачное

    if ($a == 'ru') { //фраза на русском

            echo 'Русский текст';

    } elseif ($a == 'en') { //фраза на английском

            echo 'Английский текст';

    } elseif ($a == 'de') { //фраза на немецком

            echo 'Немецкий текст';

    }

? >

Такое решение не слишком красивое - блок else здесь не нужен! Проще всего будет написать не один длинный if с несколькими else, а несколько if вообще без else:

<? php

    //Решение задачи через несколько if – оно намного лучше

    if ($a == 'ru') { //фраза на русском

            echo 'Русский текст';

    }

    if ($a == 'en') { //фраза на английском

            echo 'Английский текст';

    }

    if ($a == 'de') { //фраза на немецком

            echo 'Немецкий текст';

    }

 

    /*

            В данном коде сработает только один из ифов,

            так как $a может иметь только одно из значений

    */

? >

Однако, это решение тоже не слишком удобно. Представьте, что у вас будет не три языка, а 10 - вам придется написать 10 конструкций if.

Для таких случаев существует конструкция switch-case.

Конструкция switch-case

Конструкция switch-case представляет собой альтернативу if-else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).

Изучите ее синтаксис:

<? php

    switch ($переменная) {

            case 'значение1':

                     здесь код, который выполнится в случае, если переменная имеет значение1;

            break;

            case 'значение2':

                     здесь код, который выполнится в случае, если переменная имеет значение2;

            break;

            case 'значение3':

                     здесь код, который выполнится в случае, если переменная имеет значение3;

            break;

            default:

                     этот код выполнится в случае, если переменная не совпала ни с одним значением;

            break;

    }

? >

Решим нашу задачу с тремя языками с помощью данной конструкции:

<? php

    switch ($lang) {

            case 'ru':

                     echo 'Русский текст';

            break;

            case 'en':

                     echo 'Английский текст';

            break;

            case 'de':

                     echo 'Немецкий текст';

            break;

            default:

                     echo 'Данный язык не поддерживается';

            break;

    }

? >

.

Цикл foreach

Цикл foreach используется для прохождения по всем элементам массива.

Синтаксис такой: пишется ключевое слово foreach, а после него круглые скобки ( ). В этих скобках указывается переменная, в которой лежит массив, потом слово as, а после него - переменная, в которую при каждом проходе цикла будет ложится элемент массива.

К примеру, это может выглядеть так - foreach($arr as $elem), где $arr - это массив, а в переменную $elem будут ложиться элементы массива. Имя переменной $elem вы придумываете сами в момент создания цикла - какое придумаете, в ту переменную и будут попадать элементы массива.

После команды foreach() должны идти фигурные скобки {}. Код, который лежит в этих скобках, называется телом цикла.

Этот код будет выполняться столько раз, сколько проходов сделает цикл. А он сделает столько проходов, сколько элементов у нашего массива.

Итак, синтаксис цикла foreach выглядит так:

<? php    foreach ($arr - имя_массива as $elem – переменная_для_элемента_массива) {            /*                     Код, который находится между фигурными скобками будет повторяться                      столько раз, сколько элементов у массива.             */    }? >

Давайте решим следующую задачу: пусть дан массив $arr с пятью элементами, выведем столбец этих элементов с помощью цикла foreach.

Будем при каждом проходе цикла выводить на экран (с помощью echo) текущий элемент массива (тот, что лежит в переменной $elem ), и ставить после него тег br, чтобы получался столбец элементов, а не строка:

<? php    $arr = [1, 2, 3, 4, 5]; //этот массив дан    foreach ($arr as $elem)    /*            Код, который находится между фигурными скобками будет повторяться             столько раз, сколько элементов у массива (то есть 5 раз).     */     {            /*                     В переменной $elem будет лежать элемент массива,                      каждый раз разный: сначала первый, потом второй...                      Имя этой переменной обязательно должно отличаться от названия массива!             */            echo $elem. '< br> ';            /*                     При каждом проходе цикла на экран будет выводится элемент массива,                      получится столбец элементов нашего массива $arr = [1, 2, 3, 4, 5];                      Этот столбец будет выглядеть так:                      1                     2                     3                     4                     5            */    }? >

Цикл foreach - очень мощная и полезная вещь, его следует использовать в том случае, если вам необходимо выполнить какие-либо действия с каждым элементом массива по отдельности, например, возвести их в квадрат:

<? php    //Возведем в квадрат каждый элемент следующего массива:     $arr = [1, 2, 3, 4, 5];     foreach ($arr as $elem) {            /*                     В переменной $elem будет лежать элемент массива,                      каждый раз разный: сначала 1, потом 2...             */            echo $elem * $elem;     }? >

Циклом foreach можно пробегать не только по обычному массиву, но и по ассоциативному. В таком случае после as следует указать такую конструкцию: $ключ => $элемент. В переменной $ключ будут хранится ключи, а в переменной $элемент - соответствующие этим ключам элементы.

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

<? php    //Дан ассоциативный массив $arr:     $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $key => $elem) {            /*                     В переменной $elem будут лежать элементы массива                     сначала '1, потом 2 и так далее,                      а в переменной $key будут лежать ключи массива                     сначала 'a', потом 'b' и так далее:             */            echo $key. '-'. $elem; //выведет: 'a-1', 'b-2', 'c-3' и так далее...     }? >

Если вам нужны только значения ассоциативного массива и не нужны ключи, то $ключ=> можно не писать:

<? php    //Массив ассоциативный, но ключи нам не нужны:     $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $elem) {            echo $elem; //выведет: '1', '2', '3' и так далее...     }? >

Фигурные скобки, так же, как и для if, можно не указывать - в этом случае цикл выполнит только одну строку под ним (это относится ко всем циклам, не только к foreach):

<? php    $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $elem)            echo $elem; //выведет: '1', '2', '3' и так далее...     echo 'hello'; //выведется после цикла? >

Цикл foreach имеет альтернативный синтаксис:

<? php    //Фигурные скобки опущены, а цикл закрывается командой endforeach:     $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $elem): //обратите внимание на двоеточие!             echo $elem; //выведет: '1', '2', '3' и так далее...     endforeach;? >

Как и в случае с конструкцией if-else, мы можем разорвать скобки PHP внутри цикла, далее написать что-то на HTML и опять открыть скобки PHP – в этом случае HTML код внутри цикла повторится столько раз, сколько проходов сделает цикл (в случае foreach – это количество элементов массива):

//Как работать с HTML (этого многие не знают, обратите внимание! ): <? php    $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $elem) {            //HTML код внутри цикла повторится 5 раз:? >             <! -- Мы закрыли скобки PHP и теперь пишем на HTML, но в цикле! -->             < p > {<? php echo $elem; ? > } < / p > <? php    }? > //Альтернативный синтаксис (удобен при работе с html, так как не нужны фигурные скобки): <? php    $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];     foreach ($arr as $elem): //< --- не забываем ставить двоеточие!? >             < p > {<? php echo $elem; ? > } < / p > <? php    endforeach;? >
Поделиться:





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



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