Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема №7. Работа с массивами




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

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

1<?

2 $i = 1024;

3 $a[1] = 'abc';

4 $a[2] = 100;

5 $a['test'] = $i - $a[2];

7 echo $a[1]. "<br>\n";

8 echo $a[2]. "<br>\n";

9 echo $a['test']. "<br>\n";

10?>

В приведенном примере, в строке три объявляется элемент массива $a с индексом 1; элементу массива присваивается строковое значение 'abc'. Этой же строкой объявляется и массив $a, так как это первое упоминание переменной $a в контексте массива, массив создается автоматически. В строке 4 элементу массива с индексом 2 присваивается числовое значение 100.

В строке же 5 значение, равное разности $i и $a[2], присваивется элементу массива $a со строковым индексом 'test'.

 

Как видите, индекс массива может быть как числом, так и строкой.

 

В предыдущем примере массив создавался автоматически при описании первого элемента массива. Но массив можно задать и явно:

1 <?

2 $i = 1024;

3 $a = array(1=>'abc', 2=>100, 'test'=>$i-100);

4 print_r($a);

5?>

 

Созданный в последнем примере массив $a полностью аналогичен массиву из предыдущего примера. Каждый элемент массива здесь задается в виде индекс=>значение. При создании элемента 'test' пришлось указать значение 100 непосредственно, так как на этот раз мы создаем массив "одним махом", и значения его элементов на этапе создания неизвестны PHP.

 

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

Строки в выводе функции print_r разделяются обычным переводом строки \n, но не тэгом <br>. Для удобства чтения, строку print_r(..) можно окружить операторами вывода тэгов <pre>...</pre>:

 

echo '<pre>';

print_r($a);

echo '</pre>';

 

Если явно не указывать индексы, то здесь проявляется свойство массивов PHP, характерное для числовых массовов в других языках: очередной элемент будет иметь порядковый числовой индекс. Нумерация начинается с нуля. Пример:

1 <?

2 $operating_systems = array('Windows', 'Linux', 'FreeBSD', 'OS/2');

3 $operating_systems[] = 'MS-DOS';

5 echo "<pre>";

6 print_r($operating_systems);

7 echo "</pre>";

8?>

 

Ниже приведенное задание 1 показывает особенность использования функции print_r и тега <pre>…</pre> (рис. 3.83 -3.84).

 

Примечание. Далее в данной теме заголовок типа (рис. 3.80) приводить не будем.

Рис. 3.80. Заголовок в HTML коде.

 

 

Задание 1. Означивание массива и вывод на экран. Lab7_0.php.

В представленной ниже программе (рис. 3.81) приведены несколько вариантов объявления массива в коде с последующим выводом содержимого массива на экран.

Код Lab7_0.php.

 

Рис. 3.81. Код Lab7_0.php.

 

Результат вывода элементов массивов с помощью кода Lab7_0.php.

Рис. 3.82. Вариант 1. Результат работы кода Lab7_0.php.

 

Отметьте, что втором варианте мы явно не указывали индексы: PHP автоматически присвоил числовые индексы, начиная с нуля.

 

Рис. 3.83. Вариант 2. Результат работы кода Lab7_0.php.

 

Рис. 3.84. Вариант 3. Результат работы кода Lab7_0.php.

 

Записи массив можно перебирать с помощью цикла for. Количество элементов массива возвращает оператор count.

Например, если в тело программы Lab7_0.php добавить строки (рис. 3.85)

 

Рис. 3.85. Модифицированный код Lab7_0.php.

 

Тогда результат будет

Рис. 3.86. Вариант 4. Результат работы кода Lab7_0.php.

 

 

Задание 2. Цикл foreach. Lab7_1.php.

Для перебора элементов массива предусмотрен специальный цикл foreach:

На рис. 3.87 показано использование цикла foreach, а на рис. 3.88 результат.

Рис. 3.87. Использование Foreach для вывода массива. Lab7_1.php

Рис. 3.88. Использование Foreach для вывода массива.

 

Этот цикл работает (рис. 3.87) следующим образом: в порядке появления в коде программы элементов массива $languages, переменным $key и $value присваюваются соответственно индекс и значение очередного элемента, и выполняется тело цикла.

 

Если индексы нас не интересуют, цикл можно записать следующим образом: foreach ($languages as $value).

Т. е. в программе рис. 3.87 произвести следующую замену:

 

 

Тогда вывод на экране будет как показано на рис. 3.89.

Рис. 3.89. Использование Foreach для вывода массива.

 

 

Задание 3. Конструкции list и each. Lab7_2.php.

 

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

 

Допустим, у нас есть массив $lang = array('php', 'perl', 'basic'). Тогда конструкция list($a, $b) = $lang присвоит переменной $a значение 'php', а $b - 'perl'. Соответственно, list($a, $b, $c) = $lang дополнительно присвоит $c = 'basic'.

Если бы в массиве $lang был только один элемент, PHP бы выдал замечание об отсутствии второго элемента массива.

 

А если нас интересуют не только значения, но и индексы? Воспользуемся конструкцией each, которая возвращает пары индекс-значение.

Рис. 3.90. Использование Foreach для вывода массива. Lab7_2.php.

 

На первый взгляд может удивить тот факт, что в строках 19-21 переменным присваиваются разные значения, хотя выражения справа от знака присваивания совершенно одинаковые. Дело в том, что у каждого массива есть скрытый указатель текущего элемента. Изначально он указывает на первый элемент. Конструкция each же продвигает указатель на один элемент вперед.

 

Результат работы кода представленного на рис. 3.90 показан ниже.

 

Рис. 3.91. Использование Foreach для вывода массива. Lab7_2.php.

 

Эта особенность each позволяет перебирать массив с помощью обычных циклов while и for. Конечно, ранее рассмотренный цикл foreach удобнее, и стоит предпочесть его, но конструкция с использованием each довольно распространена, и вы можете ее встретить во множестве скриптов в сети.

 

Ниже (рис. 3.92) показан модифицированный код Lab7_2.php, использующий цикл

Рис. 3.93. Использование While для вывода массива. Lab7_2.php.

 

Результат модифицированной программы приведенной на рис. 3.93, соответствует рис. 3.91.

 

После завершения цикла, указатель текущего элемента указывает на конец массива. Если цикл необходимо выполнить несколько раз, указатель надо принудительно сбросить с помощью оператора reset: reset($brows). Этот оператор устанавливает указатель текущего элемента в начало массива.

 

Задание 4. Сортировка массива. Lab7_3.php.

Реализовать ввод названий месяцев и отсортировать их в алфавитном порядке.

Исходный код Lab7_3.php показан на рис. 3.93.

Рис. 3.93. Ввод и сортировка массива. Lab7_3.php.

В результате работы кода представленного на рис. 3.93 получим (рис. 3.94).

 

Рис. 3.94. Форма для ввода элементов массива. Lab7_3.php.

 

Если пользователь заполнит, например, форму (рис. 3.94) информацией вида (рис. 3.95).

 

Рис. 3.95. Форма с информацией. Lab7_3.php.

 

Тогда нажатие кнопки приведет к следующему результату (рис. 3.96).

 

Рис. 3.96. Форма с информацией. Lab7_3.php.

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 449; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.