Большая заметка по языку PHP

PHP массивы, функции для работы (заметка №25 по PHP)

В данной статье мы узнаем, какие PHP предоставляет функции для работы с массивами. Но сначала вспомним, какие эсть PHP операторы, работающие с массивами.

  • Объединение — Пример: $a + $b — Объединение массива $a и массива $b. Оператор + возвращает левый массив, к которому был присоединен правый массив. Для ключей, которые существуют в обоих массивах, будут использованы значения из левого массива, а соответствующие им элементы из правого массива будут проигнорированы.
  • Равно — Пример: $a == $bTRUE в случае, если $a и $b содержат одни и те же пары ключ/значение.
  • Тождественно равно — Пример: $a === $bTRUE в случае, если $a и $b содержат одни и те же пары ключ/значение в том же самом порядке и того же типа.
  • Не равно — Пример: $a != $bTRUE, если массив $a не равен массиву $b.
  • Не равно — Пример: $a <> $bTRUE, если массив $a не равен массиву $b.
  • Тождественно не равно — Пример: $a !== $bTRUE, если массив $a не равен тождественно массиву $b.

PHP сортировка массивов

Функции сортировки по значению

Функция sort

sort — сортирует массив, упорядочивает его значения по возрастанию. Эта функция присваивает новые ключи элементам массива. Она удалит все существующие ключи, а не просто переупорядочит их.

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

array — входной массив.

sort_flags — можно использовать для изменения поведения сортировки.

Флаги сортировки:

  • SORT_REGULAR — обычное сравнение элементов (без изменения типов)
  • SORT_NUMERIC — числовое сравнение элементов
  • SORT_STRING — строковое сравнение элементов
  • SORT_LOCALE_STRING — сравнивает элементы как строки с учетом текущей локали.
  • SORT_NATURAL — (PHP 5.4.0) сравнение элементов как строк, используя естественное упорядочение, аналогичное упорядочению в функции natsort()
  • SORT_FLAG_CASE — может быть объединен (побитовое ИЛИ) с константами SORT_STRING или SORT_NATURAL для сортировки строк без учета регистра.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Функция asort

asort — сортирует массив (по возрастанию), сохраняя отношения между ключами и значениями.

bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Функция rsort

rsort — сортирует массив в обратном порядке (от большего к меньшему).

bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Функция rsort

arsort — сортирует массив в обратном порядке, сохраняя ключи.

bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Функция usort

usort — Сортирует массив по значениям используя пользовательскую функцию для сравнения элементов

bool usort ( array &$array , callable $value_compare_func )

value_compare_func — Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй. Обратите внимание, что до PHP 7.0.0, это целое не могло выходить за рамки диапазона с -2147483648 по 2147483647.

Возвращаемые нецелочисленные (non-integer) значения из функции сравнения, такие как float, будут приводиться к типу integer. Поэтому такие значения, как 0.99 и 0.1, будут приводиться к целому числу 0, что указывает на равенство сравниваемых значений.

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
/* Результат:
0: 1
1: 2
2: 3
3: 5
4: 6
*/
?>

Функция uasort

uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей.

bool uasort ( array &$array , callable $value_compare_func )

<?php
// Функция сравнения
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Сортируемый массив
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

// Сортируем и выводим получившийся массив
uasort($array, 'cmp');
print_r($array);
?>

Функция shuffle

shuffle — перемешивает элементы массива в случайном порядке. Эта функция присваивает новые ключи элементам массива. Она удалит все существующие ключи, а не просто переупорядочит их.

bool shuffle ( array &$array )

<?php
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
    echo "$number ";
}
?>

Функция natsort

natsort — Сортирует массив, используя алгоритм «natural order«. Эта функция реализует алгоритм сортировки, при котором порядок буквенно-цифровых строк будет привычным для человека.

bool natsort ( array &$array )

Обычная сортировка
Array
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

Сортировка natural order
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

Функция natcasesort

natcasesort — это регистронезависимый аналог natsort(). Сортирует массив, используя алгоритм «natural order» без учета регистра символов.

bool natcasesort ( array &$array )

Обычная сортировка
Array
(
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
)

Natural order сортировка (без учета регистра)
Array
(
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
)

Функция array_multisort

array_multisort — может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Ассоциативные (string) ключи будут сохранены, но числовые ключи будут переиндексированы.

bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )

array1 — Сортируемый массив.

array1_sort_order — Порядок для сортировки вышеуказанного аргумента array. Или SORT_ASC для сортировки по возрастанию, или SORT_DESC для сортировки по убыванию. Этот аргумент может меняться местами с array1_sort_flags или вообще быть пропущенным. В этом случае подразумевается значение SORT_ASC.

array1_sort_flags — Настройки сортировки для вышеуказанного аргумента array: SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING, SORT_NATURAL, SORT_FLAG_CASE.

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

<?php
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);

$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>

Функции сортировки по ключам

Функция ksort

ksort — Сортирует массив по ключам, сохраняя отношения между ключами и значениями.

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Функция krsort

krsort — Сортирует массив по ключам в обратном порядке.

bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Функция uksort

uksort — Сортирует массив по ключам, используя пользовательскую функцию для сравнения ключей.

bool uksort ( array &$array , callable $key_compare_func )

key_compare_func — Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй. Обратите внимание, что до PHP 7.0.0, это целое не могло выходить за рамки диапазона с -2147483648 по 2147483647.

<?php
function cmp($a, $b)
{
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}

/* Результат:
an apple: 3
a banana: 4
the Earth: 2
John: 1
*/
?>

Функции для работы с массивами

is_array — Определяет, является ли переменная массивом.

explode — Разбивает строку с помощью разделителя.

array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

implode — Объединяет элементы массива в строку.

string implode ( string $glue , array $pieces )

string implode ( array $pieces )

split — Разбиение строки на массив по регулярному выражению. Эта функция объявлена УСТАРЕВШЕЙ в PHP 5.3.0, и УДАЛЕНА PHP 7.0.0.

preg_split — Разбивает строку по регулярному выражению.

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

<?php
// разбиваем строку по произвольному числу запятых и пробельных символов,
// которые включают в себя  " ", \r, \t, \n и \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>

unset — Удаляет переменную.

void unset ( mixed $var [, mixed $... ] )

<?php
// удаляем одну переменную
unset($foo);

// удаляем один элемент массива
unset($bar['quux']);

// удаляем несколько переменных
unset($foo1, $foo2, $foo3);
?>

Список других функций

array_change_key_case — Меняет регистр всех ключей в массиве

array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )

array_chunk — Разбивает массив на части

array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )

array_column — Возвращает массив из значений одного столбца входного массива

array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )

array_combine — Создает новый массив, используя один массив в качестве ключей, а другой в качестве соответствующих значений

array array_combine ( array $keys , array $values )

array_count_values — Подсчитывает количество всех значений массива

array array_count_values ( array $array )

array_diff_assoc — Вычисляет расхождение массивов с дополнительной проверкой индекса

array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )

array_diff_key — Вычисляет расхождение массивов, сравнивая ключи

array array_diff_key ( array $array1 , array $array2 [, array $... ] )

array_diff_uassoc — Вычисляет расхождение массивов с дополнительной проверкой индекса, осуществляемой при помощи callback-функции

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_diff_ukey — Вычисляет расхождение массивов, используя callback-функцию для сравнения ключей

array array_diff_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_diff — Вычислить расхождение массивов

array array_diff ( array $array1 , array $array2 [, array $... ] )

array_fill_keys — Создает массив и заполняет его значениями, с определенными ключами

array array_fill_keys ( array $keys , mixed $value )

array_fill — Заполняет массив значениями

array array_fill ( int $start_index , int $num , mixed $value )

array_filter — Фильтрует элементы массива с помощью callback-функции

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

array_flip — Меняет местами ключи с их значениями в массиве

array array_flip ( array $array )

array_intersect_assoc — Вычисляет схождение массивов с дополнительной проверкой индекса

array array_intersect_assoc ( array $array1 , array $array2 [, array $... ] )

array_intersect_key — Вычислить пересечение массивов, сравнивая ключи

array array_intersect_key ( array $array1 , array $array2 [, array $... ] )

array_intersect_uassoc — Вычисляет схождение массивов с дополнительной проверкой индекса, осуществляемой при помощи callback-функции

array array_intersect_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_intersect_ukey — Вычисляет схождение массивов, используя callback-функцию для сравнения ключей

array array_intersect_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_intersect — Вычисляет схождение массивов

array array_intersect ( array $array1 , array $array2 [, array $... ] )

array_key_exists — Проверяет, присутствует ли в массиве указанный ключ или индекс

bool array_key_exists ( mixed $key , array $array )

array_keys — Возвращает все или некоторое подмножество ключей массива

array array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] )

array_map — Применяет callback-функцию ко всем элементам указанных массивов

array array_map ( callable $callback , array $array1 [, array $... ] )

array_merge_recursive — Рекурсивное слияние двух или более массивов

array array_merge_recursive ( array $array1 [, array $... ] )

array_merge — Сливает один или большее количество массивов

array array_merge ( array $array1 [, array $... ] )

array_pad — Дополнить размер массива определенным значением до заданной величины

array array_pad ( array $array , int $size , mixed $value )

array_pop — Извлекает последний элемент массива

mixed array_pop ( array &$array )

array_product — Вычислить произведение значений массива

number array_product ( array $array )

array_push — Добавляет один или несколько элементов в конец массива

int array_push ( array &$array , mixed $value1 [, mixed $... ] )

array_rand — Выбирает одно или несколько случайных значений из массива

mixed array_rand ( array $array [, int $num = 1 ] )

array_reduce — Итеративно уменьшает массив к единственному значению, используя callback-функцию

mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )

array_replace_recursive — Рекурсивно заменяет элементы первого массива элементами переданных массивов

array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )

array_replace — Замена элементов массива элементами других переданных массивов

array array_replace ( array $array1 , array $array2 [, array $... ] )

array_reverse — Возвращает массив с элементами в обратном порядке

array array_reverse ( array $array [, bool $preserve_keys = false ] )

array_search — Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае удачи

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

array_shift — Извлекает первый элемент массива

mixed array_shift ( array &$array )

array_slice — Выбирает срез массива

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

array_splice — Удаляет часть массива и заменяет её чем-нибудь ещё

array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] )

array_sum — Вычисляет сумму значений массива

number array_sum ( array $array )

array_udiff_assoc — Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений callback-функцию

array array_udiff_assoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

array_udiff_uassoc — Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений и индексов callback-функцию

array array_udiff_uassoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func , callable $key_compare_func )

array_udiff — Вычисляет расхождение массивов, используя для сравнения callback-функцию

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

array_uintersect_assoc — Вычисляет пересечение массивов с дополнительной проверкой индексов, используя для сравнения значений callback-функцию

array array_uintersect_assoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

array_uintersect_uassoc — Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений индивидуальные callback-функции

array array_uintersect_uassoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func , callable $key_compare_func )

array_uintersect — Вычисляет пересечение массивов, используя для сравнения значений callback-функцию

array array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

array_unique — Убирает повторяющиеся значения из массива

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

array_unshift — Добавляет один или несколько элементов в начало массива

int array_unshift ( array &$array , mixed $value1 [, mixed $... ] )

array_values — Выбирает все значения массива

array array_values ( array $array )

array_walk_recursive — Рекурсивно применяет пользовательскую функцию к каждому элементу массива

bool array_walk_recursive ( array &$array , callable $callback [, mixed $userdata = NULL ] )

array_walk — Применяет заданную пользователем функцию к каждому элементу массива

bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )

array — Создает массив

array array ([ mixed $... ] )

compact — Создает массив, содержащий названия переменных и их значения

array compact ( mixed $varname1 [, mixed $... ] )

count — Подсчитывает количество элементов массива или что-то в объекте

int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )

current — Возвращает текущий элемент массива

mixed current ( array $array )

each — Возвращает текущую пару ключ/значение из массива и смещает его указатель

array each ( array &$array )

end — Устанавливает внутренний указатель массива на его последний элемент

mixed end ( array &$array )

extract — Импортирует переменные из массива в текущую таблицу символов

int extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] )

in_array — Проверяет, присутствует ли в массиве значение

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

key_exists — Псевдоним array_key_exists

key_exists — Псевдоним array_key_exists()

key — Выбирает ключ из массива

mixed key ( array $array )

list — Присваивает переменным из списка значения подобно массиву

array list ( mixed $var1 [, mixed $... ] )

next — Передвигает внутренний указатель массива на одну позицию вперёд

mixed next ( array &$array )

pos — Псевдоним current

pos — Псевдоним current()

prev — Передвигает внутренний указатель массива на одну позицию назад

mixed prev ( array &$array )

range — Создает массив, содержащий диапазон элементов

array range ( mixed $start , mixed $end [, number $step = 1 ] )

reset — Устанавливает внутренний указатель массива на его первый элемент

mixed reset ( array &$array )

sizeof — Псевдоним count



www.000webhost.com