неділю, 22 листопада 2009 р.

Массивы в PHP

В РНР массив является одним из типов переменных, который называется – array. Создать массив в РНР скрипте очень просто Пример:

$names[0]="vasya";
$names[1]="petya";
$names[2]="kolya";

Таким образом, мы создали массив с именем $names, который состоит из 3 элементов (vasya, petya, kolya). Интерпретатор РНР, догадается, что переменная $names имеет тип массив по квадратным скобкам. В этих скобках может быть указано как числовое, значение, так и строка – это значение называется ключом массива.

Массив, в котором ключами являются последовательность чисел, начиная от 0 (0,1,2…n) часто называют списком.

Любой массив в РНР является ассоциативным (т.е. каждому значению массива соответствует его ключ и наоборот). Список это тоже ассоциативный массив, только ключами в нём являются последовательный ряд целых чисел.

Что же произойдёт, если ничего не указать в квадратных скобках и оставить значение ключа пустым?

$names[]="vasya";
$names[]="petya";
$names[]="kolya";

В этом случае создаётся массив идентичный массиву в предыдущем примере. Дело в том, что когда РНР видит пустые скобки, то если переменная $names не задана, cоздаёт массив с нулевым элементом “vasya”. Каждый последующий раз интерпретатор просто добавляет элемент в конец массива. Создаётся список.

Для того, что бы обратиться к ячейке массива, нужно указать имя массива, и ключ элемента в квадратных скобках.

$names[1];         //Обращение к первому элементу массива-списка;
$names['sydorov']; //Обращение к элементу массива $names, ключ которого равен sydorov;

Операции с массивами. Функции php для работы с массивами.

Функция list(). Результатом работы этой инструкции является создание массива, элементами которого являются параметры, указанные в круглых скобках через запятую.

$names=list(vasya,petya,kolya);

Если нужно добавить только первый и третий элементы, то

$names=list(vasya,,kolya);

Функция count(). Подсчитывает количество элементов массива.

Функция array(). В параметрах данной функции указываются элементы массива. Если list() создаёт исключительно списки, то при помощи array() можно создать массив типа: любой ключ – значение.

$names=array(kolya=>ivanov, vasya=>sydorov);

Обратите внимание, что для того, чтобы создать пару ключ-значение, нужно воспользоваться символами “=>”.

Слияние массивов.

Для объединения двух массивов существует несколько способов:
1.Пройтись по всем элементам одного массива циклом, и дописать его в конец другого массива.

for($i=1;$i=count($a);$i++)
  {
    $b[]=a[i];
  }

2.Использовать функцию php – array_merge(). Параметрами данной функции будут массивы, которые нужно соединить. Будьте внимательны при использовании данной функции, при слиянии ассоциативных массивов. Так как если функция видит элементы с одинаковыми ключами, она перезаписывает эту ячейку элементом массива стоящего последним в списке её параметров. Пример:

$a=array('next'=>'k','e','r');
$b=array('r','e','next'=>'q','l','j');
$c=array_merge_recursive($a,$b);

В результате работы этого скрипта, элемент массива $c с ключом ‘next’, будет равен ‘q’. Чтобы этого избежать используйте функцию array_merge_recursive(). Она объединяет значения одинаковых ячеек. Настоятельно рекомендую использовать эту функцию, для объединения списков.
3.Массивы можно складывать знаком ‘+’.

$a=array('k','e','r');
$b=array('r','e','q','l','j');
$c=$a+$b;

В результате в массиве $c будут содержаться k,e,r,l,j,q. Как видите, данный способ, так же не учитывает дубликаты (даже в списках).

4. Перебор элементов ассоциативного массива. Специально для этой цели в php была включена конструкция foreach. Данный код:

foreach($array as $m=>$l)
echo "m-$l";

выведет элементы, массива с именем array, парами ключ-значение.

Операции сортировки и прочих обработок массивов значительно упрощены в PHP путем вызова соответствующих функций.  Массивы можно сортировать по возрастанию, убыванию, или посредством пользовательской функции сортировки. Рассмотрим, какими функциями обладает рнр для сортировки массивов.
asort() – сортирует массив по его значениям. Массив упорядочивается по возрастанию. Обратите внимание, что при этой сортировке пары ключ-значение сохраняются.
arsort() - то же самое, только массив сортируется по убыванию.
sort()/rsort() – хорошо подходит для сортировки списков (возрастание/убывание). При сортировке ассоциативных массивов их ключи попросту исчезают (т.е. эта функция превращает ассоциативный массив в список).
shuffle()- перемешивает список в случайном порядке.
array_reverce() - переворачивает массив. Т.е. возвращает массив, элементы которого следуют в обратном порядке относительно исходного.
usort/uksort- сортируют массив по правилам определённым пользователем.

Список функций для работы с массивами в PHP

array_change_key_case – Возвращает массив, символьные ключи которого преобразованы в верхний или нижний регистр символов
array_chunk – Разбить массив на части
array_combine –  Создать новый массив, используя один массив в качестве ключей, а другой в качестве соответствующих значений
array_count_values – Подсчитать количество всех значений массива
array_diff_assoc – Вычислить расхождение в массивах с дополнительной проверкой индекса
array_diff_key – Вычислить расхождение в массивах, сравнивая ключи
array_diff_uassoc –  Вычислить расхождение в массивах с дополнительной проверкой индекса, осуществляемой при помощи функции, определённой пользователем
array_diff_ukey – Вычислить расхождение в массивах, используя функцию обратного вызова для сравнения ключей
array_diff – Вычислить расхождение в массивах
array_fill – Заполнить массив определенным значением
array_filter –  Применяет фильтр к массиву, используя функцию обратного вызова
array_flip – Поменять местами значения массива
array_intersect_assoc – Вычислить схождение массивов с дополнительной проверкой индекса
array_intersect_key – Вычислить пересечение массивов, сравнивая ключи
array_intersect_uassoc – Вычислить пересечение массивов с дополнительной проверкой индекса, осуществляемой при помощи функции, определённой пользователем
array_intersect_ukey – Вычислить пересечение массивов, используя функцию обратного вызова для сравнения ключей
array_intersect – Вычислить схождение массивов
array_key_exists – Проверить, присутствует ли в массиве указанный ключ или индекс
array_keys – Выбрать все ключи массива
array_map –  Применить функцию обратного вызова ко всем элементам указанных массивов
array_merge_recursive – Рекурсивно слить два или большее количество массивов
array_merge – Слить два или большее количество массивов
array_multisort – Сортировать несколько массивов или многомерные массивы
array_pad –  Увеличить размер массива до заданной величины
array_pop – Извлечь последний элемент массива
array_product –  Вычислить произведение значений массива
array_push –  Добавить один или несколько элеметов в конец массива
array_rand –  Выбрать одно или несколько случайных значений из массива
array_reduce –  Итеративно уменьшить массив к единственному значению, используя функцию обратного вызова
array_reverse –  Возвращает массив с элементами в обратном порядке
array_search –  Осуществляет поиск данного значения в массиве и возвращает соответствующий ключ в случае удачи
array_shift –  Извлечь первый элемент массива
array_slice – Выбрать срез массива
array_splice –  Удалить последовательность элементов массива и заменить её другой последовательностью
array_sum –  Вычислить сумму значений массива
array_udiff_assoc – Вычислить расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений функцию обратного вызова
array_udiff_uassoc – Вычислить расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений и индексов функцию обратного вызова
array_udiff – Вычислить расхождение массивов, используя для сравнения функцию обратного вызова
array_uintersect_assoc – Вычислить пересечение массивов с дополнительной проверкой индексов, используя для сравнения значений функцию обратного вызова
array_uintersect_uassoc – Вычислить пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений функцию обратного вызова
array_uintersect – Вычислить пересечение массивов, используя для сравнения значений функцию обратного вызова
array_unique – Убрать повторяющиеся значения из массива
array_unshift –  Добавить один или несколько элементов в начало массива
array_values – Выбрать все значения массива
array_walk_recursive –  Рекурсивно применить пользовательскую функцию к каждому элементу массива
array_walk –  Применить пользовательскую функцию к каждому члену массива
array –  Создать массив
arsort –  Отсортировать массив в обратном порядке, сохраняя ключи
asort – Отсортировать массив, сохраняя ключи
compact –  Создать массив, содержащий названия переменных и их значения
count – Посчитать количество элементов массива или количество свойств объекта
current – Возвратить текущий элемент массива
each –  Возвратить текущую пару ключ/значение из массива и сместить его указатель
end –  Установить внутренний указатель массива на его последний элемент
extract –  Импортировать переменные из массива в текущую символьную таблицу.
in_array – Проверить, присутствует ли в массиве значение
key – Выбрать ключ из ассоциативного массива
krsort – Отсортировать массив по ключам в обратном порядке
ksort – Отсортировать массив по ключам
list –  Присвоить переменным из списка значения подобно массиву
natcasesort –  Отсортировать массив, используя алгоритм “natural order” не принимая во внимание регистр символов
natsort –  Отсортировать массив, используя алгоритм “natural order”
next –  Передвинуть внутренний указатель массива на одну позицию вперёд
pos – Alias of current()
prev – Передвинуть внутренний указатель массива на одну позицию назад
range –  Создать массив, содержащий диапазон элементов
reset –  Установить внутренний указатель массива на его первый элемент
rsort – Отсортировать массив в обратном порядке
shuffle – Перемешать массив
sizeof – Alias of count()
sort – Отсортировать массив
uasort –  Отсортировать массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей
uksort –  Отсортировать массив по ключам, используя пользовательскую функцию для сравнения ключей
usort –  Отсортировать массив по значениям используя пользовательскую функцию для сравнения элементов

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments