Массивы
| Автор: | Артемьев Сергей Игоревич |
| 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.