СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Разработка кода ИС Практическая работа №18

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Разработка кода ИС Практическая работа №18»

Практическое занятие № 18

Тема: «Основы работы с массивами в PHP. Ассоциативные и многомерные массивы»

Цель работы: приобретение навыков работы с массивами в PHP.

Краткие теоретические основания выполнения задания

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

переменную, но это очень неудобно и долго - для списка дней недели понадобилось бы 7 переменных, а для месяцев - вообще 12.

А теперь представьте, что вам нужно вывести на экран название третьего месяца. С помощью 12-ти различных переменных это было бы проблематично, так как вам необходимо помнить названия всех переменных, в которые вы записали имена месяцев.

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

$a = []; //создаем массив $a

?

Пока созданный нами массив не содержит никаких данных. Заполним его названиями дней недели (для краткости пишу две буквы каждого дня):

$a = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'];

?

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

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

Обратите внимание на то, что названия дней недели представляют собой строки и поэтому взяты в кавычки. Кроме строк в массиве можно хранить числа, и их в кавычки мы не берем:

//В массиве можно хранить как строки, так и числа:

$a = ['пн', 256, 'ср', 34, 38, 'сб', 95];

?

Посмотреть содержимое массива с помощью echo мы, увы, не сможем. Попробуйте сделать так:

//Пробуем вывести с помощью echo содержимое массива $a:

$a = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; echo $a;

?

Вы увидите на экране слово Array вместо содержимого массива.

Для того, чтобы PHP вывел нам все элементы массива, нужно воспользоваться функцией var_dump:

//Пробуем вывести с помощью var_dump содержимое массива $a:

$a = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; var_dump($a);

?

Вот теперь мы действительно увидим все элементы нашего массива.

Запомните этот момент: для того, чтобы узнать, какие именно элементы хранятся в массиве, мы должны пользоваться функцией var_dump, а не echo.

Как вывести отдельный элемент массива

Итак, массив месяцев мы составили и даже научились смотреть на него функцией var_dump. Однако, полезного пока мало, так как var_dump используется для отладки кода и выводит весь массив

целиком.

Предположим, мы хотим вывести на экран среду.

Делается это так: нужно после переменной массива (в нашем случае $a) написать квадратные скобки [ ], а в них указать порядковый номер элемента, который мы хотим вывести: $a[3]. Казалось бы, что порядковый номер среды - это 3, но это не так. Потому что в программировании нумерация

начинается с нуля. Поэтому 0 - это понедельник, 1 - это вторник, а 2 - это среда. Посмотрите и повторите пример:

//Выведем слово 'ср':

$a = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; echo $a[2];

?

Ассоциативный массив

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

В нашем случае PHP сам определял ключи для элементов - это были их порядковые номера. Иногда это может оказаться неудобным - мы хотим вывести на экран название третьего дня недели (среду), а должны писать в квадратных скобках цифру 2.

Поэтому в PHP можно указать ключи в явном виде – так, как нам нужно. Сделаем так, чтобы

понедельник имел ключ 1, а не ноль, как было раньше (и всем остальным дням прибавим единицу):

//Укажем ключи в явном виде:

$a = [1='пн', 2='вт', 3='ср', 4='чт', 5='пт', 6='сб', 7='вс'];

echo $a[1]; //выведет 'пн'

?

Синтаксис здесь такой: ключ, затем идет стрелка =, а потом значение.

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

//Массив работников:

$a = ['Коля'=200, 'Вася'=300, 'Петя'=400];

?

Узнаем зарплату Васи:

$a = ['Коля'=200, 'Вася'=300, 'Петя'=400];

echo $a['Вася']; //выведет 300

?

Массивы, у которых явно указаны ключи, называются ассоциативными. Хитрость с ключами

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

Напомню вам этот массив:

//Укажем ключи в явном виде:

$a = [1='пн', 2='вт', 3='ср', 4='чт', 5='пт', 6='сб', 7='вс'];

echo $a[3]; //выведет 'ср'

?

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

элементу поставить ключ 1.

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

А следующим номером будет как раз-таки число 2, так как предыдущий элемент имел ключ 1

(неважно, что мы сами его поставили, а не PHP автоматически). Давайте поправим наш массив:

//Укажем ключи в явном виде:

$a = [1='пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']; echo $a[3]; //выведет 'ср'

?

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

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

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

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

//Можно не писать [], а просто присвоить значения его элементам:

$a[0] = 1;

$a[1] = 2;

$a[2] = 3;

var_dump($a); //с помощью var_dump убеждаемся в том, что $a – это массив

?

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

//Ключи могут быть строками:

$a['Коля'] = 100;

$a['Вася'] = 200;

$a['Петя'] = 300;

var_dump($a); //с помощью var_dump убеждаемся в том, что $a – это массив

?

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

//Мы не пишем ключи в квадратных скобках

$a[] = 100; //100 будет иметь ключ 0

$a[] = 200; //200 будет иметь ключ 1

$a[] = 300; //300 будет иметь ключ 1

var_dump($a); //массив $a будет иметь вид [0=100, 1=200, 2=300]

?

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

Итак, повторим все способы создания массива:

//Можно просто его объявить:

$a = [];


//Можно его сразу и заполнить:

$a = [1, 2, 3];


//Можно не писать [], а просто присвоить значения его элементам:

$a[0] = 1;

$a[1] = 2;

$a[2] = 3;


//Можно даже не писать ключи, тогда PHP добавит их автоматически, начиная с нуля:

$a[] = 1;

$a[] = 2;

$a[] = 3;

?

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

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

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

//Многомерный массив студентов:

$a = [

'boys' = ['Коля', 'Вася', 'Петя'],

'girls' = ['Даша', 'Маша', 'Лена'],

];

?

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

Оборудование, материалы

Персональный компьютер с установленной ОС. Текстовый редактор Notepad++ или аналогичный. Open Server.

Порядок выполнения задания

1. Примеры решения задач

Задача 1. Дан массив с элементами 'Привет, ', 'мир' и '!'. Необходимо вывести на экран фразу 'Привет, мир!'.


Решение:




?




//Выведем фразу 'Привет, мир!':

$arr = ['Привет, ', 'мир', '!']; echo $arr[0].$arr[1].$arr[2];

Разберем это решение.

Слово 'Привет, ' хранится под номером 0, это значит, что для доступа к нему мы должны написать

$arr[0].

Для доступа к слову 'мир' мы должны написать $arr[1], а $arr[2] содержит в себе '!'. Далее с помощью оператора 'точка' мы сложим три наши строки ('Привет, ', 'мир' и '!') в одну строку таким образом:

$arr[0].$arr[1].$arr[2], и выведем на экран с помощью echo.

Задача 2. Решим немного другую задачу: дан массив с элементами 'Привет, ', 'мир' и '!'. Необходимо записать в переменную $text фразу 'Привет, мир!', а затем вывести на экран содержимое этой

переменной.

Решение:

$arr = ['Привет, ', 'мир', '!'];

$text = $arr[0].$arr[1].$arr[2];


/*

В переменной $text теперь лежит строка 'Привет, мир!'. Выведем ее на экран:

*/

echo $text;

?

Задача 3. Дан массив ['Привет, ', 'мир', '!']. Необходимо записать в первый элемент (то есть элемент с номером ноль) этого массива слово 'Пока, ' (то есть вместо слова 'Привет, ' будет 'Пока, ').

Решение:




$arr = ['Привет, ', 'мир', '!'];

$arr[0] = 'Пока, '; //перезапишем первый элемент массива var_dump($arr); //посмотрим на массив и убедимся в том, что он

изменился

?

Задача 4. Ассоциативные массивы. Создайте массив заработных плат $arr. Выведите на экран зарплату Пети и Коли.

//Этот массив дан:

$arr = ['Коля'='1000$', 'Вася'='500$', 'Петя'='200$'];

?

Решение: чтобы вывести зарплату Коли следует вывести значение элемента массива с ключом 'Коля'. Сделаем это:

$arr = ['Коля'='1000$', 'Вася'='500$', 'Петя'='200$']; echo $arr['Коля']; //выведет 1000$

?

Задача 5. Способы создания массива. Создайте массив $arr с элементами 1, 2, 3, 4, 5 двумя различными способами.

Решение:

Первый способ создать массив - объявить его через []:

$arr = [1, 2, 3, 4, 5];

?

Второй способ создания массива - это поступить таким образом:

$arr[] = 1;

$arr[] = 2;

$arr[] = 3;

$arr[] = 4;

$arr[] = 5;

?

Задача 6. Многомерный массив. Дан многомерный массив $arr:

$arr = [

'ru'=['голубой', 'красный', 'зеленый'],

'en'=['blue', 'red', 'green'],

];

Выведите с его помощью слово 'голубой'.

Решение: так как массив многомерный (в нашем случае двухмерный), то нам придется написать несколько квадратных скобок подряд. Поясню это по шагам. Давайте сделаем так:

var_dump($arr['ru']);

?

В этом случае результатом будет массив ['голубой','красный', 'зеленый'], который является частью нашего многомерного массива. Чтобы вывести слово 'голубой', на необходимо дописать еще одну квадратную скобку с ключом, соответствующим этому элементу (у него нет явного ключа - значит его ключ 0):

echo $arr['ru'][0]; //выведет 'голубой'

?

Выведем теперь слово 'красный':


?

Выведем 'red':


?

echo $arr['ru'][1]; //выведет 'красный'




echo $arr['en'][1]; //выведет 'red'

Задачи для решения Работа с массивами
  1. Создайте массив $arr=['a', 'b', 'c']. Выведите значение массива на экран с помощью функции

var_dump().
  1. С помощью массива $arr из предыдущего номера выведите на экран содержимое первого, второго и третьего элементов.

  2. Создайте массив $arr=['a', 'b', 'c', 'd'] и с его помощью выведите на экран строку 'a+b, c+d'.

  3. Создайте массив $arr с элементами 2, 5, 3, 9. Умножьте первый элемент массива на второй, а третий элемент на четвертый. Результаты сложите, присвойте переменной $result. Выведите на экран значение этой переменной.

  4. Заполните массив $arr числами от 1 до 5. Не объявляйте массив, а просто заполните его присваиванием $arr[] = новое значение.

Ассоциативные массивы
  1. Создайте массив $arr. Выведите на экран элемент с ключом 'c'.

$arr = ['a'=1, 'b'=2, 'c'=3];

  1. Создайте массив $arr. Найдите сумму элементов этого массива.

$arr = ['a'=1, 'b'=2, 'c'=3];

  1. Создайте массив заработных плат $arr. Выведите на экран зарплату Пети и Коли.

$arr = ['Коля'='1000$', 'Вася'='500$', 'Петя'='200$'];

  1. Создайте ассоциативный массив дней недели. Ключами в нем должны служить номера дней от начала недели (понедельник - должен иметь ключ 1, вторник - 2 и т.д.). Выведите на экран

текущий день недели.

  1. Пусть теперь номер дня недели хранится в переменной $day, например там лежит число 3. Выведите день недели, соответствующий значению переменной $day.

Многомерные массивы
  1. Создайте многомерный массив $arr. С его помощью выведите на экран слова 'joomla', 'drupal', 'зеленый', 'красный'.

$arr = [

'cms'=['joomla', 'wordpress', 'drupal'], 'colors'=['blue'='голубой', 'red'='красный', 'green'='зеленый']

];

  1. Создайте двухмерный массив. Первые два ключа - это 'ru' и 'en'. Пусть первый ключ содержит элемент, являющийся массивом названий дней недели по-русски, а второй - по-английски. Выведите с помощью этого массива понедельник по-русски и среду по английски (пусть понедельник - это первый день).

  2. Пусть теперь в переменной $lang хранится язык (она принимает одно из значений или 'ru', или 'en'

- либо то, либо то), а в переменной $day - номер дня. Выведите словом день недели,

соответствующий переменным $lang и $day. То есть: если, к примеру, $lang = 'ru' и $day = 3 - то выведем 'среда'.

Вопросы для повторения
  1. С помощью какой структуры данных можно хранить списки сходных значений в PHP?

  2. Какими способами можно организовать массив в PHP?

  3. Данные какого типа можно хранить в массиве?

  4. Можно ли в массиве хранить данные разных типов?

  5. Как организовать многомерный массив?

  6. Что такое ассоциативный массив?

  7. Что такое ключ элемента массива?

Ресурсы и ссылки

http://code.mu/books/php/base/osnovy-raboty-s-massivami-v-php.html

https://steptosleep.ru/php-%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C-

%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2/