1215 關聯陣列

2021-05-13 00:19:34 字數 1581 閱讀 3182

一、陣列變數的限制

在前面講的陣列變數中,可以通過下標訪問其中的元素。例如,下列語句訪問陣列

@array

的第三個元素:

$scalar = $array[2];

雖然陣列很有用,但它們有乙個顯著缺陷,即很難記住哪個元素存貯的什麼內容。假如我們來寫乙個程式計算某檔案中首字母大寫的單詞出現的次數,用陣列來實現就比較困難,程式**如下:

1 : #!/usr/local/bin/perl

2 :3 : while ($inputline = )

15:}

16:if ($found == 0)

21:}

22: }

23: print ("capitalized words and number of occurrences:/n");

24: for ($count = 1; $count <= @wordlist; $count++)

執行結果如下:

here is a line of input.

this input contains some capitalized words. ^d

capitalized words and number of occurrences:

here: 1

input: 2

this: 1

capitalized: 1

這個程式每次從標準輸入檔案讀一行文字,第四行起的迴圈匹配每行中首字母大寫的單詞,每找到乙個迴圈一次,賦給簡單變數

$word

。在第六行中去掉標點後,檢視該單詞是否曾出現過,

7~15

行中在@wordlist

中挨個元素做此檢查,如果某個元素與

$word

相等,@wordcount

中相應的元素就增加乙個數。如果沒有出現過,即

@wordlist

中沒有元素與

$word

相等,16~20

行給@wordlist

和@wordcount

增加乙個新元素。

二、定義

正如你所看到的,使用陣列元素產生了一些問題。首先,

@wordlist

中哪個元素對應著哪個單詞並不明顯;更糟的是,每讀進乙個新單詞,程式必須檢查整個列表才能知道該單詞是否曾經出現過,當列表變得較大時,這是很耗費時間的。

這些問題產生的原因是陣列元素通過數字下標訪問,為了解決這類問題,

perl

定義了另一種陣列,可以用任意簡單變數值來訪問其元素,這種陣列叫做關聯陣列,也叫雜湊表。

為了區分關聯陣列變數與普通的陣列變數,

perl使用%

作為其首字元,而陣列變數以

@打頭。與其它變數名一樣,

%後的第乙個字元必須為字母,後續字元可以為字母、數字或下劃線。

三、訪問關聯陣列的元素

關聯陣列的下標可以為任何簡單

/標量值,訪問單個元素時以

$符號打頭,下標用大括號圍起來。例如:

$fruit

$number

$integer

簡單變數也可作為下標,如:

$fruit

9 3 關聯陣列

關聯陣列是bash 4.0新增的乙個特性。關聯陣列將值與索引連線 關聯 到一起,所以我們可以將元資料與實際資料關聯起來。使用這種方式可以將 家與他的樂器聯絡起來。關聯陣列必須以大寫的declare a命令來進行宣告。cat musicians.sh bin bash declare a beatle...

JS 關聯陣列

使用方式 var arr arr key1 value1 arr key2 value2 通常的陣列在填充時會隱式或者顯示指定陣列下標,但js中陣列可以以名字的形式為元素賦值,這就形成了關聯陣列,如 var arr new array arr china beijing,niaoling,hulan...

索引陣列 關聯陣列

php 數字 索引陣列一般表示陣列元素在陣列中的位置,是有數字組成,下列標從0開始 比較好的是php中的陣列元素可以是任意型別如 arr3 指定索引號 鍵 值 在陣列中,鍵是不相同的,值可以相同 鍵如果相同時最後乙個鍵會覆蓋前乙個鍵的值 索引陣列 arr array 50,60,70,80,90 a...