Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции БДиСУБД.docx
Скачиваний:
17
Добавлен:
19.11.2019
Размер:
494.91 Кб
Скачать

Типarray(массив)

МассиввPHPпредставляетсобойупорядоченнуюкарту–тип,которыйпреобразуетзначениявключи.Этоттипоптимизированвнесколькихнаправлениях,поэтомувыможетеиспользоватьегокаксобственномассив,список(вектор),хеш-таблицу(являющуюсяреализациейкарты),стэк,очередьит.д.ПосколькувыможетеиметьвкачествезначениядругоймассивPHP,можнотакжелегкоэмулироватьдеревья.

Определитьмассивможноспомощьюконструкцииarray()илинепосредственнозадаваязначенияегоэлементам.

Определениеприпомощиarray()

array([key]=>value,

[key1]=>value1,...)

Языковаяконструкцияarray()принимаетвкачествепараметровпарыключ=>значение,разделенныезапятыми.Символ=>устанавливаетсоответствиемеждузначениемиегоключом.Ключможетбытькакцелымчислом,такистрокойзначениеможетбытьлюбогоимеющегосявPHPтипа.Числовойключмассивачастоназываютиндексом.ИндексированиемассивавPHPначинаетсяснуля.Значениеэлементамассиваможнополучить,указавпослеименимассивавквадратныхскобкахключискомогоэлемента.Еслиключмассивапредставляетсобойстандартнуюзаписьцелогочисла,тоонрассматриваетсякакчисло,впротивномслучае–какстрока.Поэтомузапись$a["1"]равносильназаписи$a[1],такжекаки$a["-1"]равносильно$a[-1].

<?php

$books=array("php"=>

"PHPusersguide",

12=>true);

echo$books["php"];

//выведет"PHPusersguide"

echo$books[12];

//выведет1

?>

Пример2.9.МассивывPHP

Еслидляэлементаключнезадан,товкачествеключаберетсямаксимальныйчисловойключ,увеличенныйнаединицу.Еслиуказатьключ,которомуужебылоприсвоенокакое-тозначение,тоонобудетперезаписано.НачинаясPHP4.3.0,еслимаксимальныйключ–отрицательноечисло,тоследующимключоммассивабудетноль(0).

<?php

//массивы$arrи$arr1эквивалентны

$arr=array(5=>43,32,56,"b"=>12);

$arr1=array(5=>43,6=>32,

7=>56,"b"=>12);

?>

Пример2.10.МассивывPHP

ЕслииспользоватьвкачествеключаTRUEилиFALSE,тоегозначениепереводитсясоответственновединицуинольтипаinteger.ЕслииспользоватьNULL,товместоключаполучимпустуюстроку.Можноиспользоватьисамупустуюстрокувкачествеключа,приэтомеенадобратьвкавычки.Такчтоэтонетожесамое,чтоиспользованиепустыхквадратныхскобок.Нельзяиспользоватьвкачествеключамассивыиобъекты.

Определениеспомощьюсинтаксисаквадратныхскобок

Создатьмассивможно,простозаписываявнегозначения.Какмыужеговорили,значениеэлементамассиваможнополучитьспомощьюквадратныхскобок,внутрикоторыхнужноуказатьегоключ,например,$book["php"].Еслиуказатьновыйключиновоезначение,например,$book["new_key"]="new_value",товмассивдобавитсяновыйэлемент.Еслимынеукажемключ,атолькоприсвоимзначение$book[]="new_value",тоновыйэлементмассивабудетиметьчисловойключ,наединицубольшиймаксимальногосуществующего.Еслимассив,вкоторыймыдобавляемзначения,ещенесуществует,тоонбудетсоздан.

<?

$books["key"]=value;//добавиливмассив

//$booksзначение

//valueсключомkey

$books[]=value1;/*добавиливмассив

значениеvalue1с

ключом13,поскольку

максимальныйключу

насбыл12*/

?>

Длятогочтобыизменитьконкретныйэлементмассива,нужнопростоприсвоитьемусегоключомновоезначение.Изменитьключэлементанельзя,можнотолькоудалитьэлемент(паруключ/значение)идобавитьновую.Чтобыудалитьэлементмассива,нужноиспользоватьфункциюunset().

<?php

$books=array("php"=>

"PHPusersguide",

12=>true);

$books[]=

"BookaboutPerl";//добавилиэлемент

//сключом(индексом)

//13этоэквивалентно

//$books[13]=

//"BookaboutPerl";

$books["lisp"]=

123456;/*Этодобавляеткмассивуновый

элементсключом"lisp"и

значением123456*/

unset($books[12]);//Этоудаляетэлемент

//cключом12измассива

unset($books);//удаляетмассивполностью

?>

Заметим,что,когдаиспользуютсяпустыеквадратныескобки,максимальныйчисловойключищетсясредиключей,существующихвмассивесмоментапоследнегопереиндексирования.Переиндексироватьмассивможноспомощьюфункцииarray_values().

<?php

$arr=

array("a","b","c");/*Создаеммассив

созначениями

"a","b"и"c".

Посколькуключи

неуказаны,они

будут0,1,2

соответственно*/

print_r($arr);//выводиммассив(иключи,

//изначения)

unset($arr[0]);

unset($arr[1]);

unset($arr[2]);

//удаляемизнеговсезначения

print_r($arr);//выводиммассив(иключи,

//изначения)

$arr[]="aa";//добавляемновыйэлемент

//вмассив.

//Егоиндексом(ключом)

//будет3,ане0

print_r($arr);

$arr=

array_values($arr);//переиндексируем

//массив

$arr[]="bb";//ключомэтогоэлемента

//будет1

print_r($arr);

?>

Пример2.11.Переиндексациямассива

Результатомработыэтогоскриптабудет:

Array([0]=>a[1]=>b[2]=>c)

Array()

Array([3]=>aa)

Array([0]=>aa[1]=>bb)