Лабораторная работа №5 «Массивы в PHP» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №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"?>

Результат:

0:1 1:2 2:3 3:4 4:5

Заметим такую вещь. Если вы сортируете строки, т.е, к примеру, массив выглядит вот так

array ( "one", "two", "abs", "three", "uic", "for","five" );

то эта чудо-функция вернет вам следующее:

Результат:

0:abs 1:five 2:for 3:one 4:three 5:two 6:uic

Т.е. строки она сортирует в так называемом альфа-бета порядке, попросту говоря – по старшинству первой буквы в алфавите.

 

Rsort()

Сортировка массива по убыванию.

Синтаксис:

void rsort ( array arr [, int sort_flags] )

Аналогична функции sort(), только сортирует по убыванию. Выполним тот же скрипт, что и для функции sort(), только вместо sort($arr) поставим rsort($arr).

Результат:

0:5 1:4 2:3 3:2 4:1

 

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 " ); }?>

Результат:

d => four a => one c => three b => two

Т.е., как видим, связи "ключ-значение" сохранились.

По умолчанию функция 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 " ); }?>

Результат:

a => one b => two c => three d => four

 

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> " ); }?>

Т.е., что получилось:

В первом случае:

Результат:

Массив: 0 =>Array 1 =>4 2 =>php Сортированный массив: 0 =>Array 1 =>4 2 =>php

Если в качестве второго параметра передать true, то получим следующий результат:

Результат:

Массив: 0 =>Array 1 =>4 2 =>php Сортированный массив: 2 =>Array 1 =>4 0 =>php

 

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 );?>

Результат:

обычная сортировка: Array ([0] => pict1.gif [1] => pict10.gif [2] => pict2.gif [3] => pict20.gif) естественная сортировка: Array ([3] => pict1.gif [1] => pict2.gif [0] => pict10.gif [2] => pict20.gif)

 



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 130; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.38.117 (0.028 с.)