Лабораторная работа № 2.
Функции и массивы в php.

Цель работы: Изучить приемы работы с функциями и массивами в PHP.

Базовые сведения:

Массивы

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

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

$data = array(1,10,100,1000,                // Численные данные
              'Some text','Another text',   // Строковые данные
              'name'=>'John','age'=>23,     // Ассоциативные связи в массиве
              'date'=>array('day'=>10,'month'=>'may','year'=>2001)); //Вложенный массив

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

  echo $data[1];               // Результат - 10
  echo $data[5];               // Результат - 'Another text'
  echo $data['age'];           // Результат - 23
  echo $data['date']['month']; // Результат - 'may'

Большое количество информации и примеров, а также описания функций для обработки массивов можно найти в Учебник РНР.

Variable scope

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

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

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

Как же получить доступ к глобальным переменным из функции? Есть два способа сделать это:

  1. Использовать глобальный ассоциативный массив $GLOBALS. Это единственная переменная в PHP, которая видна отовсюду и которая "содержит" в себе все глобальные переменные, имеющиеся в программе. Т.о. если вы внутри функции обращаетесь к переменной $variable - то вы обращаетесь к локальной переменной, а если $GLOBALS['variable'] - то к глобальной.
      function myFunction() {
        $variable = 5;               // Присваиваем значение локальной переменной
        $GLOBALS['variable'] = 10;   // Присваиваем значение глобальной переменной
      };
    

  2. Использовать ключевое слово global. Оно позволит вам задать список глобальных переменных, которые будут видимы внутри функции:
      function myFunction()  {
          global $variable;
          $variable = 10;       // Присваиваем значение глобальной переменной
      };
    

Функции в PHP

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

function mySum($a,$b) {
        $result = $a+$b;
        return($result);
};
Использование этой функции:
$result = mySum(2,3);

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

Имя функции должно быть уникальным с точностью до регистра букв. Это означает, что, во-первых, имена MyFunction, myf unction и даже MyFuNcTiOn будут считаться одинаковыми, и, во-вторых, мы не можем переопределить уже определенную функцию (стандартную или нет - не важно), но зато можем давать функциям такие же имена, как и переменным в программе (конечно, без знака $ в начале). Список аргументов, как легко увидеть, состоит из нескольких перечисленных через запятую переменных, каждую из которых мы должны будем задать при вызове функции. Конечно, если у функции не должно быть аргументов вовсе (как это сделано у функции time ()), то следует оставить пустые скобки после ее имени.

Любая функция в PHP состоит из 4 основных частей:

Имени функции.
Каждая функция должна иметь свое уникальное имя, в противном случае PHP выдаст ошибку о попытке переопределения функции.
Списка аргуметов.
Этот список может быть пустым (если функция не должна получать агрументов из внешней программы). Каждый аргумент должен иметь уникальное имя, под которым он будет "известен" внутри функции. В приведенном выше примере функция имеет два аргумента с именами $a и $b.
Непосредственно кода функции.
Функция может содержать внутри себя практически любой код, допустимый в PHP за исключением определения других функций и объектов (это, кстати, отличает PHP например от JavaScript, где вложенное определение функций допустимо). В нашем случае код функции занимается вычислением значения суммы двух переданных аргументов.
Возвращаемого значения.
Функция не обязана возвращать значение, но если сделать это необходимо, то это делается с помощью оператора return().

Возврат функцией нескольких значений

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

.

Задания на лабораторную работу

  1. Изучите функции работы с массивами
  2. Постройте функцию, которая генерирует страницу, с таблицей заданных размеров.
  3. Постройте функцию распознавания простого числа.
  4. В отдельном файле содержится массив, содержащий: ФИО, возраст, пол, образование. Построить функцию отображающую данные из массива в виде таблицы на html-странице, специальным образом выделяя различные значения параметров.