關(guān)聯(lián)數(shù)組和前面說的數(shù)組類似,它包含標(biāo)量數(shù)據(jù),可用索引值來單獨選擇這些數(shù)據(jù),和數(shù)組不同的是,關(guān)聯(lián)數(shù)組的索引值不是非負(fù)的整數(shù)而是任意的標(biāo)量。這些標(biāo)量稱為Keys,可以在以后用于檢索數(shù)組中的數(shù)值。
關(guān)聯(lián)數(shù)組的元素沒有特定的順序,你可以把它們想象為一組卡片。每張卡片上半部分是索引而下半部分是數(shù)值。
關(guān)聯(lián)數(shù)組是Perl語言中特有的,關(guān)聯(lián)數(shù)組是一個功能強大的數(shù)組。使用關(guān)聯(lián)數(shù)組時要在前面加上號,關(guān)聯(lián)數(shù)組的格式如:
ARRAY=(key1,value1,key2,value2,key3,value3);
每一個key都有一個相對應(yīng)的值(value)。
和數(shù)組類似,$zmd,@zmd,zmd之間沒有任何聯(lián)系。Perl為對象的不同類型保留獨立的命名空間。
下面介紹關(guān)聯(lián)數(shù)組的操作:
在關(guān)聯(lián)數(shù)組中增加、更改一對數(shù)據(jù):ARRAY={key}=value;在關(guān)聯(lián)數(shù)組ARRAY中加上一對key-value,要在關(guān)聯(lián)數(shù)組名稱前加上$號,而且key的名稱要在{}符號之間,最后再指定key所對應(yīng)的value值。如果在這個關(guān)聯(lián)數(shù)組中已經(jīng)有這個key了.就會更改這個key所對應(yīng)的value。
keys(array)操作符可生成由關(guān)聯(lián)數(shù)組array中的所有當(dāng)前關(guān)鍵字組成的列表。即返回奇數(shù)個元素(第1,3,5,7...個)的列表。
values(array)操作符返回由關(guān)聯(lián)數(shù)組array中所有當(dāng)前值組成的列表,即返回偶數(shù)個列表。
echo(array)操作符返回由一個關(guān)鍵字和一個值對構(gòu)成的兩個元素的表。對同一數(shù)組再操作時返回下一對值直至結(jié)束。若沒有更多的對時,echo()返回空表。(這在打印全部列表中很有用)
刪除一對在關(guān)聯(lián)數(shù)組中的數(shù)據(jù):delete$ARRAY{key};delete是Perl所提供的函數(shù),作用是刪除關(guān)聯(lián)數(shù)組中的一個key以及這個key所對應(yīng)的value。使用方法是在delete函數(shù)之后,指定關(guān)聯(lián)數(shù)組中要刪除的key名稱。
關(guān)聯(lián)數(shù)組的綜合舉例:
fred=(one,"zmd",two,"cxm");$a=$fred{one};---#$a等于"zmd"
$b=$fred{two}---#$b等于"cxm"
$fred{two}="yes"---#fred=(one,"zmd",two,"yes")
@number=keys(fred)---#@list=(one,two)
@user=values(fred)---#@user=("zmd","cxm")
($number,$name)=echo(fred)---#此時$number的值為one,$name的值為"zmd",再執(zhí)行一次$number為值為two,$name的值為"cxm")
@a=fred---#將關(guān)聯(lián)數(shù)組fred指定給數(shù)組a,這時@a=(one,"zmd",two,"cxm")
b=@a---#將數(shù)組a指定給關(guān)聯(lián)數(shù)組b,這時b=(one,"zmd",two,"cxm")
delete$fred{one}---#將關(guān)聯(lián)數(shù)組中key值為one的一對key-value刪除,這時fred=(two,"cxm")
name=()---#把name關(guān)聯(lián)數(shù)組置空