Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №5 «Массивы в PHP»Содержание книги
Поиск на нашем сайте
В PHP существует 2 метода инициализации массивов. Первый из них состоит в простом присвоении значений элементам массива: <? $car[] = "passenger car"; $car[] = "land-rover"; echo( $car[1] ); // выводит "land-rover"?>Индекс массива можно указать явно: <? $car[0] = "passenger car"; $car[1] = "land-rover"; echo( $car[1] ); // выводит "land-rover"?>Заметим, что если при объявлении элементов массива смешиваются переменные с явной индексацией, и без индексации, то тому элементу, индекс которого не задан, PHP присвоит первый доступный индекс, после самого большого использованного до сих пор индекса. Например, если мы создадим массив с элементами, индексы которых будет равны, скажем, 10, 20 и 30, а потом создадим элемент, индекс которого явно не укажем, то ему автоматически присвоится индекс 31: <? $car[10] = "passenger car"; $car[20] = "land-rover"; $car[30] = "station-wagon"; $car[] = "victoria"; echo( $car[31] );?>Альтернативный способ определения массивов состоит в использовании конструкции array(): <? $car = array ( "passenger car","land-rover" ); echo( $car[1] ); // выводит "land-rover"?>Для явного указания индексов в этом случае применяется оператор =>: <? $car = array ( "passenger car", 5 => "land-rover", "station-wagon","victoria" ); echo( $car[0] ); echo( "<br>" ); // выводит "passenger car" echo( $car[5] ); echo( "<br>" ); // выводит "land-rover" echo( $car[6] ); echo( "<br>" ); // выводит "station-wagon" echo( $car[7] ); // выводит "victoria"?>Индексами массива могут быть и строки: <? $car = array ( "pc" => "passenger car", "lr" => "land-rover" ); echo( $car["lr"] ); echo( "<br>" ); // выводит "land-rover" echo( $car["pc"] ); // выводит "passenger car"?>Цикл foreach для обхода массивов
Обход массива в цикле в PHP4 можно организовать при помощи цикла foreach, который имеет следующий синтаксис: foreach ( array as [$key =>] $value ){ statements ;}Смысл этого цикла прост: при проходе каждого элемента массива в переменную $key помещается индекс этого элемента, а в переменную $value – его значение. Имена этих двух переменных совершенно произвольны. Пример: <? $car = array ( "passenger car", "land-rover", "station-wagon","victoria" ); foreach ( $car as $index => $val ) { echo( "$index -> $val <br>" ); }?>Как видно из синтаксиса, переменная $key необязательна и может быть опущена: <? echo( "available cars: <br> <ul>" ); $car = array ( "passenger car", "land-rover", "station-wagon","victoria" ); foreach ( $car as $val ) { echo( "<li>$val</li>\n" ); } echo( "</ul>" );?>Многомерные массивы Для инициализации многомерных массивов используются вложенные конструкции array(). Обход многомерных массивов достигается при помощи вложенных циклов. В следующем скрипте показан пример создания и обхода многомерного массива.
Пример: <? $ship = array ( "Passenger ship" => array("Yacht","Liner","Ferry"), "War ship" => array("Battle-wagon","Submarine","Cruiser"), "Freight ship" => array("Tank vessel","Dry-cargo ship","Container cargo ship") ); foreach ( $ship as $key => $type ) { echo( "<h2>$key</h2>\n"."<ul>\n" ); foreach ( $type as $ship ) { echo( "\t<li>$ship</li>\n" ); } } echo( "</ul>\n" );?>Ну а теперь, будем рассматривать функции, которые есть в PHP для работы с массивами. И первое с чего мы начнем – это функции сортировки массивов. Однако до этого я еще скажу о трех функциях, которыми мы часто будем пользоваться в наших примерах. Функция count() Синтаксис: int count ( mixed var )Эта функция принимает в качестве аргумента массив и возвращает количество элементов в нем. Как понимаете, штука незаменимая, когда будем бегать по массиву циклом for().
Функция in_array() Синтаксис: boolean in_array ( mixed needle, array haystack [, bool strict] )Эта функция ищет в массиве haystack значение needle и возвращает true если оно найдено и false в противном случае.
Функция reset() Синтаксис: mixed reset ( array array )Функция reset() устанавливает указатель массива на первый элемент и возвращает значение первого элемента массива. Функции сортировки массивов Sort() Функция сортировки массива по возрастанию. Синтаксис: void sort ( array array [, int sort_flags] )Функция сортирует массив array по возрастанию. Необязательный аргумент sort_flags указывает как именно должны сортироваться элементы (задает флаги сортировки). Допустимыми значениями этого аргумента являются следующие: · SORT_REGULAR – задает нормальное сравнение элементов (сравнивает элементы "как есть") · SORT_NUMERIC - сравнивает элементы как числа · SORT_STRING - сравнивает элементы как строки Вообще говоря, эта функция предназначена для сортировки списков. Под списком понимается массив, ключи которого начинаются с нуля и не имеют пропусков. Функция sort() воспринимает любой массив как список. Рассмотрим примерчик. Пример: <? $arr = array ( "2", "1", "4", "3","5" ); sort ( $arr ); for ( $i=0; $i < count ( $arr ); $i++ ) { echo ( "$i:$arr[$i] " ); } // выводит "0:1 1:2 2:3 3:4 4:5"?>Результат:
Заметим такую вещь. Если вы сортируете строки, т.е, к примеру, массив выглядит вот так array ( "one", "two", "abs", "three", "uic", "for","five" );то эта чудо-функция вернет вам следующее: Результат:
Т.е. строки она сортирует в так называемом альфа-бета порядке, попросту говоря – по старшинству первой буквы в алфавите.
Rsort() Сортировка массива по убыванию. Синтаксис: void rsort ( array arr [, int sort_flags] )Аналогична функции sort(), только сортирует по убыванию. Выполним тот же скрипт, что и для функции sort(), только вместо sort($arr) поставим rsort($arr). Результат:
Asort() Сортировка ассоциативного массива по возрастанию. Синтаксис: void asort ( array arr [, int sort_flags] )Функция asort() сортирует массив arr так, чтобы его значения шли в алфавитном (если это строки) или возрастающем (для чисел) порядке. Важное отличие этой функции от функции sort() состоит в том, что при применении функцииasort()сохраняются связи между ключами и соответствующими им значениями, чего нет в функции sort() (там эти связи попросту разрываются). Пример: <? $arr = array ( "a" =>"one","b" => "two","c" => "three","d" => "four" ); asort ( $arr ); foreach ( $arr as $key => $val ) { echo ( " $key => $val " ); }?>Результат:
Т.е., как видим, связи "ключ-значение" сохранились. По умолчанию функция asort() сортирует массив в алфавитном порядке. Значения флагов сортировки sort_flagsприведены в описании функции sort().
Arsort() Сортировка ассоциативного массива по убыванию. Синтаксис: void arsort ( array arr [, int sort_flags] )Эта функция аналогична функции asort(), только она упорядочивает массив не по возрастанию, а по убыванию.
Ksort() Сортировка массива по возрастанию ключей. Синтаксис: int ksort ( array arr [, int sort_flags] )В этой функции сортировка осуществляется не по значениям, а по ключам в порядке их возрастания. <? $arr = array ( "a" =>"one","b" => "two","c" => "three","d" => "four" ); ksort ( $arr ); foreach ( $arr as $key => $val ) { echo ( " $key => $val " ); }?>Результат:
Krsort() Сортировка массива по убыванию индексов. Синтаксис: int krsort ( array arr [, int sort_flags] )То же самое, что и функция ksort(), только упорядочивает массив по ключам в обратном порядке (по убыванию).
array_reverse() Расстановка элементов массива в обратном порядке. Синтаксис: array array_reverse ( array arr [, bool preserve_keys] )Функция array_reverse() возвращает массив, элементы которого следуют в обратном порядке относительно массива arr, переданного в параметре. При этом связи между ключами и значениями сохраняются. Можно еще необязательный параметрpreserve_keys сделать true, тогда в обратном порядке переставятся еще и ключи. Своруем идейку примерчика на эту функцию из php-шного мануала: <? $arr = array ( "php", 4.0, array ( "green", "red" )); $result = array_reverse ( $arr ); echo "Массив: <br>"; foreach ( $result as $key => $val ) { echo ( "$key => $val <br>" ); } echo( "<br>" ); echo "Сортированный массив: <br>"; $result_keyed = array_reverse ( $arr, false); foreach($result_keyed as $key => $val) { echo ( "$key => $val<br> " ); }?>Т.е., что получилось: В первом случае: Результат:
Если в качестве второго параметра передать true, то получим следующий результат: Результат:
Shuffle() Перемешивание элементов массива случайным образом. Синтаксис: void shuffle ( array arr )Функция shuffle() перемешивает элементы масиива arr случайным образом.
Natsort() Выполняет "естественную" сортировку массива. Синтаксис: void natsort ( array arr )С такой сортировкой мы уже встречались, когда работали со строками. Поработаем с ней еще разок. Как помните, под естественной сортировкой понимается сортировка таким образом, когда элементы того, что сортируется располагаются в "понятном" для человека порядке. Пример: <? $array1 = $array2 = array ( "pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif" ); echo ( "обычная сортировка:" ); echo ( "<br>" ); sort ( $array1 ); print_r ( $array1 ); echo ( "<br>" ); echo ( "естественная сортировка:" ); echo ( "<br>" ); natsort ( $array2 ); print_r ( $array2 );?>Результат:
|
||||||||||||
|
Последнее изменение этой страницы: 2020-11-28; просмотров: 211; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.57 (0.008 с.) |