Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 134; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.73.87 (0.019 с.) |