Лекция

Тема: «Работа с массивами в 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, за исключением того, что сортирует элементы массива по убыванию.