Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб №5. Конструкции. Массивы. (Продолжение)!!!....doc
Скачиваний:
9
Добавлен:
22.04.2019
Размер:
643.07 Кб
Скачать

Лабораторная работа № 5 методические указания «php программирование. Конструкции языка (продолжение) Массивы»

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

Введение.

Некоторые из них уже применялись, и не раз — например, инструкция if. В этой лабораторной приводится полное описание некоторых языковых конструкций РНР. Их не так много, и это достоинство РНР. Как показывает практика, чем более лаконичен синтаксис языка, тем проще его использовать в повседневной практике. РНР — отличный пример этому.

Теоретическая часть. Конструкции (инструкции) языка PHP. Массивы.

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

Как создается простой массив?

ПРИМЕР

*/ I способ*/

<?php

$name[0] = "Саша ";

$name[1] = "Маша ";

$name[2] = "Ваня ";

$name[3] = "Аня ";

$name[4] = "Костя ";

Echo $name[3];

?>

*/ I I способ*/

<?php

$name=array(0=>" Саша", 1=>" Маша", 2=>" Ваня", 3=>" Аня", 4=>" Костя");

Echo $name[3];

?>

*/ I I I способ*/

Автомассивы.

<?php

$name[] = "Саша ";

$name[] = "Маша ";

$name[] = "Ваня ";

$name[] = "Аня ";

$name[] = "Костя ";

Echo $name[3];

?>

<?php

$name=array("Саша", "Маша", "Ваня", "Аня", "Костя");

Echo $name[3];

?>

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

Ассоциативные массивы содержат не числовые индексы(ключи), а текстовые. Ассоциативные массивы—один из самых мощных инструментов в РНР.

Пример.

Создаём ассоциативный массив

*/ I способ*/

<?php

$capital["Russia"] = "Москва";

$capital["USA"] = "Вашингтон";

$capital["France"] = "Париж";

$capital["Ukraine"] = "Киев";

$capital["Italy"] = "Рим";

Echo $capital["Russia"];

$naselenie = array("Russia"=>"141", "USA"=>"304", "France"=>"63", "Ukraine"=>"46","Italy"=>"59");

Echo "Столица России -".$capital["Russia"].".Население России-".$naselenie["Russia"];

Или

Echo "Столица России $capital [Russia]. Население России - $naselenie [Russia] млн. человек.";

?>

Пусть у нас в программе нужно описать список из нескольких человеческих имен. Можно сделать это так (листинг 5.1):

Листинг 5.1. Инициализация массива

$NamesList[0]="Dmitry";

$NamesList[1]="Helen";

$NamesList[2]="Sergey";

Таким образом, мы по одному добавляем в массив $NamesList элементы, например, пронумерованные от 0. РНР узнает, что мы хотим создать массив, по квадратным скобкам (нужно заметить, что для этого переменная $NamesList в начале не должна еще быть инициализирована).

В дальнейшем будем называть массивы, ключи (или, как их часто называют, индексы — то, что стоит в квадратных скобках), которые нумеруются с нуля и идут без пропусков, списками.

Некоторые стандартные функции РНР, обрабатывающие массивы, требуют передавать в их параметрах именно списки, хотя чаще всего можно это ограничение обойти, передав им любой другой массив. В таком случае они все равно рассматривают массив как обычный список, т. е. не обращают никакого внимания на его ключи. Что во многих случаях это бывает нежелательно. Распечатаем список листинга 5.1. Самый простой способ — воспользоваться циклом for:

echo "А вот первый элемент массива: ".$NamesList[0]."<hr>";

for($i=0; $i<кол-во_элементов; $i++)

echo $NamesList[$i]."<br>";

Количество элементов в массиве легко можно определить, задействуя функцию count ( ) или ее синоним sizeof ( ) :

for($i=0; $i<count($NamesList); $i++)

echo $NamesList[$i]."<br>";

Создание массива "на лету". Автомассивы

В примере из листинга 5.1, каждый раз, добавляя имя, мы должны выбирать для него номер и заботиться, чтобы ненароком не указать уже существующий. Чтобы этого избежать, можно написать те же команды так:

$NamesList[]="Dmitry";

$NamesList[]="Helen";

$NamesList[]="Sergey";

В этом случае PHP сам начнет (конечно, если переменная $NamesList еще не существует) нумерацию с нуля и каждый раз будет прибавлять к счетчику по единичке, создавая список.

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

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

$Names["Koteroff"] = "Dmitry";

$Names["Ivanov"] = "Ivan";

$Names["Petrov"] = "Peter";

Далее, мы можем распечатать имя любого абонента командой:

echo $Names["Ivanov"];

$f="Koteroff";

echo $Names[$f];

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