Лекция
Тема: «Работа с массивами в PHP. Создание и сортировка
массивов»
План.
1.
Массив в PHP
2.
Cоздание массива в
PHP
3.
Функции работы с
массивами
1.
Массив в PHP
Массив – это специальный тип
переменных, который может содержать множество значений одновременно, доступных
через одно имя переменой. Массив очень удобно использовать при работе с большим
количеством данных (таких, как записи в базе данных), или групп значений,
взаимосвязанных друг с другом.
Массив может содержать любое количество
элементов, и в том числе ни одного элемента.
К каждому элементу можно получить доступ с
помощью индекса, который может быть числовым или строчным значением.
Каждый элемент в массиве имеет свой собственный уникальный индекс.
Элемент может хранить любой тип
переменных, например, целое число, строку или логическое значение. Можно
смешивать типы значений в массиве — например, первый элемент может содержать
целое число, второй элемент может содержать строку и так далее.
Длина массива - это количество
элементов в массиве.
Значения элементов массива сами могут быть
массивами. Таким образом, можно создать многомерный массив.
PHP работает с двумя типами массивов:
Индексированные
массивы имеют числовые индексы. Обычно индекс в индексированных
массивах начинается с нуля, таким образом, первый элемент имеет
индекс 0, второй - индекс 1, и так далее. Обычно такие массивы
используются для хранения набора данных в определенном порядке.
Ассоциированные
массивы имеют строчные индексы. Например, один элемент
ассоциированного массива может иметь индекс "name", а другой
элемент будет иметь индекс "age". Порядок элементов обычно не важен.
Ассоциированные массивы используются в случаях, когда нужно хранить записи
данных, как при использовании базы данных.
В действительности PHP не имеет внутренних
различий между индексированными и ассоциированными массивами. Можно даже
смешивать числовые и строчные индексы в одном массиве, если нужно. Однако,
проще считать, что индексированные и ассоциированные массивы являются
различными типами массивов. Тем более, что много функций PHP разработаны для
обработки либо индексированных, либо ассоциированных массивов.
Ассоциированные массивы иногда
называются хэш, а их индексы
часто называют ключами.
2.
Cоздание массива в
PHP
В скрипте PHP создать массив очень просто.
Для этого используется конструкция array():
|
1 |
$myArray = array( значения ); |
Чтобы создать индексированный
массив, просто перечислите значения внутри скобок, разделяя их запятой.
Следующая строка создает индексированный массив с именами режиссеров и
присваивает массиву имя $directors:
$directors = array( "Alfred
Hitchcock", "Stanley Kubrick", "Martin
Scorsese", "Fritz Lang" );
При создании индексированного массива PHP
автоматически назначает индекс каждому элементу. В выше приведенном
примере "Alfred Hitchcock" получит
индекс 0, "Stanley Kubrick" - индекс 1, и так
далее.
Чтобы создать ассоциированный
массив, нужно создать пары индекс - значение с помощью
оператора =>:
|
1 |
индекс => значение |
Следующий пример создает ассоциированный
массив с информацией о фильме и присваивает массиву имя $movie:
|
1 |
$movie = array( "title" => "Rear
Window", |
|
|
2 |
"director" => "Alfred
Hitchcock", "year" =>
1954 ); |
|
Чтобы создать пустой массив, нужно
написать:
|
1 |
$myArray = array(); |
Формирование
массива из значений текстовых полей, находящихся на форме.
Пусть имеется форма, содержащая 10
текстовых полей с именами от T1 до T10.
<?
//Задание 1 – заполним массив значениями текстовых
полей
//описываем
пустой массив
$mas = array();
//в цикле
записываем все числовые поля в массив
for ($i=1 ; $i<=10; $i++)
//если поле содержит число, то записываем
значение в массив
if (is_numeric($_POST['T'.$i]))
//индекс массива
не указан
//его
наращивание происходит автоматически
$mas[] = $_POST[‘$T’.$i];
//Задание 2 – ниже формы выведем значения из массива
echo 'Исходный массив: <br>';
//от нулевого
элемента массива до последнего
// count(имя
массива) – функция, определяющая количество элементов массива
for($i=0; $i<count($mas); $i++)
{
//выводим элементы массива
echo $mas[$i].'<br>';
}
//Задание 3 – ниже формы выведем значения из массива
в виде таблицы
//выводим теги
для начала таблицы
echo '<table border="1" width="50">';
for($i=0; $i<count($mas); $i++)
{
//каждый элемент
выводим в отдельной ячейке
echo
'<tr><td align="center">'.
$mas[$i].'</td></tr>';
}
//выводим теги
для завершения таблицы
echo
'</table>';
?>
3.
Функции работы с
массивами
Математические
операции с массивами
max($myArray) – функция для
определения максимального значения в массиве
min($myArray) – функция для
определения минимального значения в массиве
array_sum(($myArray) – функция для
определения суммы значений в массиве
array_product(($myArray)
– функция
для нахождения произведения всех значений массива
Сортировка
массивов
Функция
sort осуществляет
сортировку массива по возрастанию.
Синтаксис:
sort($arr [, int $sort_flags])
где $arr – исходный
массив, $sort_flags
– флаг сортировки.
Функция sort предназначена для
сортировки элементов массива $arr по возрастанию. После упорядочивания
последовательность ключей превращается в 0, 1, 2, ..., а значения нужным
образом перераспределяются. При этом связи между параметрами “ключ=>значение”
не сохраняются.
Необязательный аргумент sort_flags
указывает, как именно должны сортироваться элементы (задает флаг сортировки).
Возможными значениями этого аргумента являются следующие:
SORT_REGULAR - задает нормальное сравнение элементов (сравнивает
элементы “как есть”);
SORT_NUMERIC - сравнивает элементы как числа;
SORT_STRING - сравнивает элементы как строки.
Необходимо отметить, что эта функция
предназначена для сортировки списков. Под списком понимается массив, ключи
которого начинаются с нуля и не имеют пропусков. Функция sort
воспринимает любой массив как список.
Пример. После
формирования массива из 10 полей посчитать максимальное, минимальное, суммарное
и среднее значение по массиву, а также отсортировать массив и вывести отсортированный
массив ниже формы в виде таблицы.
<?
//вывод значений
echo
'Максимальное='.max($mas) . '<br>';
echo
'Минимальное='.min($mas) . '<br>';
echo 'Сумма='.array_sum($mas)
. '<br>';
echo 'Среднее='.array_sum($mas)/count($mas)
. '<br>';
//сортировка массива
sort($mas);
//вывод
отсортированного массива
echo 'Отсортированный
массив: <br>';
echo '<table border="1" width="50">';
for($i=0; $i<count($mas); $i++)
{
echo '<tr><td>'.
$mas[$i].'</td></tr>';
}
echo '</table>';
?>
Функция
rsort - осуществляет сортировку массива по убыванию.
Синтаксис:
rsort($arr [, int $sort_flags])
где $arr – исходный
массив, $sort_flags – флаг
сортировки.
Функция rsort сортирует в
обратном порядке элементы массива “$arr”, переданного в ее
параметрах. Данная функция аналогична функции sort, за исключением
того, что сортирует элементы массива по убыванию.