Рассмотрим некоторые встроенные наиболее распространенные функции, которые мы можем применять при работе с массивами.
Функция is_array() проверяет, является ли переменная массивом, и если является, то возвращает true
, иначе возвращает
false
. Например:
$users = ["Tom", "Bob", "Sam"]; $isArray = is_array($users); echo ($isArray==true)?"это массив":"это не массив";
Функция count() и sizeof() получают количество элементов массива:
$users = ["Tom", "Bob", "Sam"]; $number = count($users); // то же самое, что // $number = sizeof($users); echo "В массиве users $number элемента/ов";
Функция shuffle перемешивает элементы массивы случайным образом:
$users = ["Tom", "Bob", "Sam", "Alice"]; shuffle($users); print_r($users); // один из возможных вариантов //Array ( [0] => Bob [1] => Tom [2] => Alice [3] => Sam )
Функция compact позволяет создать из набора переменных ассоциативный массив, где ключами будут имена переменных:
<?php $model = "Apple II"; $producer = "Apple"; $year = 1978; $data = compact("model", "producer", "year"); print_r($data); // получится следующий вывод // Array ( [model] => Apple II [producer] => Apple [year] => 1978 ) ?>
Функция compact получает в скобках набор переменных. Каждая переменная указывается в кавычка без знака $. Результатом функции является новый массив.
В PHP имеются два типа сортировки: сортировка строк по алфавиту и сортировка чисел по возрастанию/убыванию. Если сортируемые значения представляют строки, то они сортируются по алфавиту, если числа - то они сортируются в порядке возрастания чисел. PHP по умолчанию самостоятельно выбирает тип сортировки.
Для сортировки по возрастанию используется функция asort:
$users = ["Tom", "Bob", "Sam", "Alice"]; asort($users); print_r($users); // вывод отсортированного массива // Array ( [3] => Alice [1] => Bob [2] => Sam [0] => Tom )
В данном случае значения массива представляют строки, поэтому PHP выберет сортировку по алфавиту. Однако с помощью дополнительного параметра мы можем явно указать интерпретатору PHP тип сортировки. Данный параметр может принимать три значения:
SORT_REGULAR
: автоматический выбор сортировки
SORT_NUMERIC
: числовая сортировка
SORT_STRING
: сортировка по алфавиту
Укажем явно тип сортировки:
asort($users, SORT_STRING);
Чтобы отсортировать массив в обратном порядке, применяется функция arsort:
arsort($users);
Функция asort
производит сортировку по значениям элементов, но также существует и еще и сортировка по ключам. Она представлена функцией
ksort:
$states = ["Spain" => "Madrid", "France" => "Paris", "Germany" => "Berlin", ]; asort($states); print_r($states); // массив после asort - сортировка по значениям элементов // Array ( [Germany] => Berlin [Spain] => Madrid [France] => Paris ) ksort($states); print_r($states); // массив после ksort - сортировка по ключам элементов // Array ( [France] => Paris [Germany] => Berlin [Spain] => Madrid )
Сортировка по ключам в обратном порядке выполняется функцией krsort():
krsort($states);
Хотя выше описанные функции сортировки прекрасно выполняют свою работу, но их возможностей все-таки недостаточно. Например, отсортируем по возрастанию следующий массив:
<?php $os = array("Windows 7", "Windows 8", "Windows 10"); asort($os); print_r($os); // результат // Array ( [2] => Windows 10 [0] => Windows 7 [1] => Windows 8 ) ?>
Так как значения представляют строки, то PHP сортирует по алфавиту. Однако подобная сортировка не учитывает числа и регистр. Поэтому значение "Windows 10" будет идти в самом начале, а не в конце, как должно было быть. И для решения этой проблемы в PHP есть функция natsort(), которая выполняет естественную сортировку:
<?php $os = array("Windows 7", "Windows 8", "Windows 10"); natsort($os); print_r($os); // результат // Array ( [0] => Windows 7 [1] => Windows 8 [2] => Windows 10) ?>
Если нам надо еще при этом, чтобы сортировка не учитывала регистр, то мы можем применить функцию natcasesort():
natcasesort($os);