Массивы
Автор: | Артемьев Сергей Игоревич |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
Массивы очень широко применяются в PHP-скриптах.
Массив - это набор элементов, к каждому из которых можно обратиться по индексу или имени. Все массивы в PHP являются ассоциативными, т.е. остоят из пар "ключ"="значение".
<?php $arr = array(); $arr['car'] = 'Чайка'; ?>
Массив $arr содержит одну пару значений. Ключом в ней будет значение 'car', а значением - 'Чайка'.
Значение ключей может быть текстового или числового типа, причем в одном массиве допускается применение ключей разных типов. Например, следующий код вполне работоспособен:
<?php $arr = array(); $arr['car'] = 'Чайка'; $arr['age'] = 100; $arr[10] = 'Элемент с ключом 10 '; ?>
Иногда нет необходимости задавать ключи элементов. В этом случае можно воспользоваться тем, что PHP может создавать ключи автоматически при добавлении элементов в массив. Ключи всегда будут числовыми и начинаться с нуля. Например:
<?php // эти два объявления массива эквивалентны $arr = array('первый', 'второй', 'третий'); // и $arr = array(0=>'первый', 1=>'второй', 2=>'третий'); ?>
Сочетание "=>" используется для отделения ключа от значения в элементе при объявлении массива.
Обращение к отдельному элементу массива производится по его индексу или ключу:
<?php $arr = array('первый', 'второй', 'третий'); $first = $arr[0]; ?>
А с помощью конструкции foreach можно быстро перебрать все элементы массива:
<?php $arr = array('первый', 'второй', 'третий'); foreach($arr as $key=>$value) echo "Элемент массива номер $key равен '$value'"; ?>
Для работы с архивами в PHP предусмотрен ряд функций, позволяющих выполнить набор стандартных операций, таких как сортировка, поиск или разворот массива. Рассмотрим наиболее используемые функции.
array_chunk() | Служит для разделения массива на части заданного размера. Функция возвращает массив из фрагментов исходного массива.
<?php $arr = array('а', 'б', 'в', 'г', 'д'); $arr_chunked = array_chunk($arr, 3); // $arr_chunked[0] содержит 'а', 'б', 'в' // $arr_chunked[1] содержит 'г', 'д' ?> |
array_combine() | Функция объединяет два массива так, что элементы первого становятся ключами, а элементы второрого - значениями результирующего ассоциативного массива.
<?php $keys = array(0, 1, 2); $vals = array('а', 'б', 'в'); $res = array_combine($keys, $vals); // $res содержит 0=>'а', 1=>'б', 2=>'в' ?> |
array_count_values() | Подсчитывает количество уникальных значений в массиве и частоту их появления
<?php $arr = array('а', 'б', 'в', 'а', 'в', 'а'); $res = array_count_values($arr); // $res содержит 'а' => 3, 'б' => 1, 'в' => 2 ?> |
array_diff() | Функция выделяет разницу двух массивов, т.е. элементы, которые есть в первом массиве и нет во втором.
<?php $arr1 = array('а', 'а', 'в'); $arr2 = array('а', 'б', 'в'); $res = array_diff($arr1, $arr2); // $res содержит 'б' ?> |
array_fill() | Заполняет массив заданным значением
<?php $arr = array(); $res = array_fill(2, 3, 'xxx'); // $res содержит 2=>'xxx' 3=>'xxx' 4=>'xxx' ?> |
array_flip() | Меняет местами ключи и значения ассоциативного массива
<?php $arr = array(0=>'а', 1=>'б', 2=>'в'); $res = array_flip($arr); // $res содержит 'а'=>0, 'б'=>1, 'в'=>2 ?> |
array_intersect() | Функция вычисляет пересечение двух массивов, т.е. выдаёт все элементы, которые есть одновременно в обоих массивах.
<?php $arr1 = array('а', 'а', 'в'); $arr2 = array('а', 'б', 'в'); $res = array_diff($arr1, $arr2); // $res содержит 'а', 'в' ?> |
array_key_exists() | Функция проверяет, имеется ли в массиве ключ с таким именем.
<?php $arr = array(0=>'а', 1=>'б', 2=>'в'); if(array_key_exists(1, $arr) echo 'Ключ найден'; else echo 'Ключ не найден'; ?> |
array_keys() | Возвращает массив ключей
<?php $arr = array(0=>'а', 1=>'б', 2=>'в'); $res = array_keys($arr); // $res содержит 0, 1, 2 ?> |
array_merge() | Объединяет один или более массивов. Значения элементов с одинаковыми ключами заменяется элементами второго массива
<?php $arr1 = array(0=>'а', 1=>'а', 2=>'в'); $arr2 = array(3=>'а', 0=>'б', 4=>'в'); $res = array_merge($arr1, $arr2); // $res содержит 0=>'б', 1=>'а', 2=>'в', 3=>'а', 4=>'в' ?> |
array_rand() | Возвращает один случайный элемент из массива
<?php $arr = array('а', 'б', 'в'); $res = array_rand($arr, 1); // $res[0] содержит один случайный элемент из $arr ?> |
array_reverse() | Возвращает исходный массив, но в обратном поряде, т.е. прочитанный от конца к началу.
<?php $arr = array('а', 'б', 'в'); $res = array_reverse($arr); // $res содержит 'в', 'б', 'а' ?> |
array_search() | Функция производит поиск элемента массива, соответствующего заданным условиям. Возвращает имя соответствующего ключа.
<?php $arr = array(11=>'а', 22=>'б', 33=>'в'); $key = array_search('б', $arr); // $key равен 22 ?> |
array_shift() | Сдвигает все элементы массива к началу, при этом первый элемент массива теряется.
<?php $arr = array('а', 'б', 'в'); $res = array_shift($arr); // $res содержит 'б', 'в' ?> |
array_slice() | Извлекает фрагмент массива
<?php $arr = array('а', 'б', 'в'); $res = array_slice($arr, 1, 2); // $res содержит 'б', 'в' ?> |
array_sum() | Функция возвращает сумму всех значений массива
<?php $arr = array(100, 200, 300); $sum = array_sum($arr); // $sum равно 600 ?> |
array_unique() | Удаляет повторяющиеся значения из массива
<?php $arr = array(100, 200, 200, 300); $res = array_unique($arr); // $res содержит 100, 200, 300 ?> |
array_unshift() | Функция обратная array_shift(), сдвигает все элементы к концу массива и добавляет элемент в начало.
<?php $arr = array('б', 'в'); $res = array_unshift($arr, 'x', 'y'); // $res содержит 'x', 'y', 'б', 'в' ?> |
array_values() | Возвращает массив значений исходного массива
<?php $arr = array('x'=>'а', 'y'=>'б', 'z'=>'в'); $res = array_values($arr); // $res содержит 'а', 'б', 'в' ?> |
array() | Функция создаёт пустой или предустановленный массив.
<?php $arr_empty = array(); $arr_preset = array('x'=>'а', 'y'=>'б', 'z'=>'в'); ?> |
count() | Подсчитывает количество элементов в массиве
<?php $arr = array('а', 'б', 'в'); echo count($arr); // выведет 3 ?> |
in_array() | Проверяет, существует ли в массиве указанное значение
<?php $arr = array('а', 'б', 'в'); if(in_array('a', $arr)) echo 'Значение есть в массиве'; else echo 'Значения в массиве нет'; ?> |
list() | Оператор позволяет присвоить массив списку переменных.
<?php $arr = array('Иван', 'Петрович', 'Семёнов'); list($name, $otch, $fam) = $arr; echo 'Имя: ' . $name; echo 'Отчество: ' . $otch; echo 'Фамилия: ' . $fam; ?> |
sort() | Функция сортировки массива
<?php $arr = array('Семён', 'Петрович', 'Иванов'); sort($arr); // $arr содержит 'Иванов', 'Петрович', 'Семён', ?> |
Как видите пользоваться массивами очень просто, а главное - чрезвычайно удобно. Ни один большой проект не обходится без применения массивов. Мы расмотрели только часть доступных функций, не вдаваясь в тонкости их применения для различных ситуаций. Более подробную информацию вы сможете почерпнуть из официального руководства на сайте www.php.net.