После небольшого перерыва мы возобновляем написание новых статей о php, и продолжаем начатую ранее тему - изучение массивов. Сегодня мы коснёмся трёхмерного массива. Помимо высоты и ширины, как в двумерном, он ещё имеет и глубину, т.е. третьим измерением его является глубина. Наглядным примером трёхмерного массива в жизни может служить любой объёмный предмет, например книга. У неё есть ширина страницы, её длина, а так же глубина, т.е. количество страниц.
Ссылка на каждый элемент такого массива будет осуществляться по его слою, строке и столбцу. Таким образом, можно сказать, что трёхмерный массив - это массив, содержащий массив массивов. Ниже приведён код, показывающий реализацию трёхмерного массива на нашем примере: $mass3mern = array( array( array( "CDR", "CDR-диски", 100), array( "CDRW", "CDRW-диски", 10), array( "FUT", "Футляры", 4) ), array( array( "CDR", "CDR-диски", 100), array( "CDRW", "CDRW-диски", 10), array( "FUT", "Футляры", 4) ), array( array( "CDR", "CDR-диски", 100), array( "CDRW", "CDRW-диски", 10), array( "FUT", "Футляры", 4) ) ); По данному шаблону, Вы можете создавать четырёх-, пяти-, двадцатимерные массивы. Всё зависит от Вашей фантазии и потребности. Хочу только добавить, что если будете использовать массив более 3-ей размерности, то будет очень тяжело: запутаться в таком количестве операторов не составит труда. Но думаю, что на практике, более третьей размерности, Вам массив не понадобится. Сортировка массивовСортировка массива это довольно часто встречающаяся задача. К примеру, Вы пишете обработчик какой-либо формы заказа, использующей массив. И Вам необходимо посмотреть, какой же следующий по порядку был сделан заказ, чтобы его обработать. Если записей не много, то это ещё не проблема, а если их десятки? Сотни? Время - деньги, поэтому существует очень полезная штука в php - сортировка.
Для сортировки используется функция sort(), позволяющая отсортировать массив в алфавитном порядке, например: $products = array( "CDR-диски", "CDRW-диски", "Футляры" ); sort($products); Теперь элементы массива будут отсортированы в алфавитном порядке.
Значения можно упорядочивать также в цифровом порядке: $prices = array(100,10,4); sort($prices); Для хранения информации о товарах и ценах используется ассоциативный массив, для которого функции сортировки немного другие. В следующем примере, создаётся ассоциативный массив, содержащий три товара и связанные с ними цены, а затем сортирует массив в порядке увеличения цен : $prices = array("CDR-диски"=>100, "CDRW-диски"=>10, "Футляры"=>4); asort($prices); Как Вы могли заметить, здесь используется функция asort(), которая упорядочивает массив в соответствии со значениями элементов. В данном массиве значения - это цены, а ключи - текстовые описания.
Если сортировку нужно выполнить не по ценам, а по описаниям, следует использовать функцию ksort(), которая выполняет сортировку по ключам. Следующий код приведёт к упорядочиванию ключей массива в алфавитном порядке: $prices = array("CDR-диски"=>100, "CDRW-диски"=>10, "Футляры"=>4); ksort($prices); Сортировка массивов в обратном порядкеДля сортировки массива в обратном порядке существуют другие функции, очень похожие на те, с которыми мы работали. Это: - rsort() - сортировка одномерного численно-индексированного массива в порядке убывания;
- arsort()- сортировка одномерного ассоциативного массива в порядке убывания значений элементов;
- ksort() - сортировка одномерного ассоциативного массива в порядке убывания значений ключей элементов.
Другие манипуляции с массивомВкратце расскажу, что ещё можно делать с массивами. При создании нового массива текущий указатель инициализируется так, чтобы указывать на первый элемент массива. Вызов функции current( $array name) возвращает первый элемент. Вызов функции each() или next() перемещает указатель вперёд на один элемент. Функция reset() возвращает указатель на первый элемент массива. Для перемещения в массиве в обратном направлении можно воспользоваться функциями end() и prev(). Иногда требуется выполнить одинаковые действия, по отношению ко всем элементам массива или изменять их одинаковым образом. Делать это позволяет функция array_walk: int array_walk(array arr, string func, [mixed userdata]) |