|
Language support
The following is a comparison of associative arrays (also "mapping", "hash", and "dictionary") in various programming languages. For more details, see Associative array. AwkAwk has built-in, language-level support for associative arrays. For example: phonebook["Sally Smart"] = "555-9999" phonebook["John Doe"] = "555-1212" phonebook["J. Random Hacker"] = "555-1337" You can also loop through an associated array as follows:
for (name in phonebook) {
print name, " ", phonebook[name]
}
You can also check if an element is in the associative array, and delete elements from an associative array. Multi-dimensional associative arrays can be implemented in standard Awk using concatenation and e.g. SUBSEP:
{ # for every input line
multi[$1 SUBSEP $2]++;
}
#
END {
for (x in multi) {
split(x, arr, SUBSEP);
print arr[1], arr[2], multi[x];
}
}
Thompson AWK [1] provides built-in multi-dimensional associative arrays:
{ # for every input line
multi[$1][$2]++;
}
#
END {
for (x in multi)
for (y in multi[x])
print x, y, multi[x][y];
}
CThere is no standard implementation of an associative array in C, but a 3rd party library with BSD license is available here. POSIX 1003.1-2001 describes the functions Another 3rd party library, uthash, also creates associative arrays from C structures. A structure represents a value, and one of the structure fields acts as the key. Finally, the Glib library also supports associative arrays, along with many other advanced data types and is the recommended implementation of the GNU Project. ColdFusionYou can use a ColdFusion structure to perform as an associative array. Here is a sample in ColdFusion:
<cfscript>
phoneBook = StructNew();
phoneBook["Sally Smart"] = "555-9999";
phoneBook["John Doe"] = "555-1212";
phoneBook["J. Random Hacker"] = "555-1337";
sName = "A Person";
phoneBook[sName] = "555-4321";
phoneBook.UnknownComic = "???";
</cfscript>
<!-- will output 3 question marks below: -->
<cfoutput>
#phoneBook["UnknownComic"]#
</cfoutput>
C#Hashtable ht = new Hashtable(); ht.Add("testKey", "AssociatedData"); MessageBox.Show((string) ht["testKey"]); Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(7, "Bond"); MessageBox.Show(dic[7]); In the above sample the Dictionary<int, string> = new Dictionary<int, string> { { 7, "Bond" } }; C++C++ also has a form of associative array called #include <map> #include <string> int main() { std::map<std::string, std::string> phone_book; phone_book["Sally Smart"] = "555-9999"; phone_book["John Doe"] = "555-1212"; phone_book["J. Random Hacker"] = "553-1337"; return 0; } You can iterate through the list with the following code: std::map<std::string, std::string>::iterator curr,end; for(curr = phone_book.begin(), end = phone_book.end(); curr != end; curr++) std::cout << curr->first << " = " << curr->second << std::endl; In C++, the Cocoa/GNUstep (Objective-C)Cocoa (API) and GNUstep handle associative arrays using NSMutableDictionary *aDictionary = [[NSMutableDictionary alloc] init]; [aDictionary setObject:@"555-9999" forKey:@"Sally Smart"]; [aDictionary setObject:@"555-1212" forKey:@"John Doe"]; [aDictionary setObject:@"553-1337" forKey:@"Random Hacker"]; To access assigned objects this command may be used: id anObject = [aDictionary objectForKey:@"Sally Smart"]; All keys or values can be simply enumerated using NSEnumerator *keyEnumerator = [[aDictionary allKeys] objectEnumerator]; id key; while (( key = [keyEnumerator nextObject] )) { // ... process it here ... } What is even more practical, structured data graphs may be easily created using Cocoa, especially NSDictionary *aDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSDictionary dictionaryWithObjectsAndKeys: @"555-9999", @"Sally Smart", @"555-1212", @"John Doe", nil], @"students", [NSDictionary dictionaryWithObjectsAndKeys: @"553-1337", @"Random Hacker", nil], @"hackers", nil]; And relevant fields can be quickly accessed using key paths: id anObject = [aDictionary valueForKeyPath:@"students.Sally Smart"]; DD offers direct support for associative arrays in the core language - they are implemented as a chaining hash table with binary trees[1]. The equivalent example would be: int main() { char[][char[]] phone_book; phone_book["Sally Smart"] = "555-9999"; phone_book["John Doe"] = "555-1212"; phone_book["J. Random Hacker"] = "553-1337"; return 0; } Keys and values can be any types, but all the keys in an associative array must be of the same type, and the same for values. You can also loop through all properties and associated values, i.e. as follows: foreach (key, value; phone_book) { writefln("Number for $name: $number\n", key, value); } A property can be removed as follows: phone_book.remove("Sally Smart"); DelphiDelphi does not offer direct support for associative arrays. However, you can simulate associative arrays using TStrings object. Here's an example: procedure TForm1.Button1Click(Sender: TObject); var DataField: TStrings; i: Integer; begin DataField := TStringList.Create; DataField.Values['Sally Smart'] := '555-9999'; DataField.Values['John Doe'] := '555-1212'; DataField.Values['J. Random Hacker'] := '553-1337'; // access an entry and display it in a message box ShowMessage(DataField.Values['Sally Smart']); // loop through the associative array for i := 0 to DataField.Count - 1 do begin ShowMessage('Number for ' + DataField.Names[i] + ': ' + DataField.ValueFromIndex[i]); end; DataField.Free; end; JavaIn Java associative arrays are implemented as "maps"; they are part of the Java collections framework. Since J2SE 5.0 and the introduction of generics into Java, collections can have a type specified; for example, an associative array mapping strings to strings might be specified as follows: Map<String, String> phoneBook = new HashMap<String, String>(); phoneBook.put("Sally Smart", "555-9999"); phoneBook.put("John Doe", "555-1212"); phoneBook.put("J. Random Hacker", "555-1337"); The This code uses a hash map to store the associative array, by calling the constructor of the The hash function in Java is provided by the method The For two objects a and b,
In order to maintain this contract, a class that overrides A further contract that the map has with the object is that the results of the JavaScriptJavaScript (and its standardized version: ECMAScript) is a prototype-based object-oriented language. In JavaScript an object is a mapping from property names to values -- that is, an associative array with one caveat: since property names are strings, only string keys are allowed. Other than that difference, objects also include one feature unrelated to associative arrays: a prototype link to the object they inherit from. Doing a lookup for a property will forward the lookup to the prototype if the object does not define the property itself. An object literal is written as var myObject = { "Sally Smart" : "555-9999", "John Doe" : "555-1212", "J. Random Hacker" : "553-1337" }; If the property name is a valid identifier, the quotes can be omitted, e.g.: var myOtherObject = { foo : 42, bar : false } Lookup is written using property access notation, either square brackets, which always works, or dot notation, which only works for identifier keys: myObject["John Doe"] myOtherObject.foo You can also loop through all enumerable properties and associated values as follows: for(var property in myObject) { var value = myObject[property]; alert("myObject[" + property + "] = " + value); } A property can be removed as follows: delete myObject["Sally Smart"]; As mentioned before, properties are strings. However, since every native object and primitive can be implicitly converted to a string, you can do: myObject[1] // key is "1"; note that myObject[1] === myObject['1'] myObject[['a','b']] // key is "a,b" myObject[{toString:function(){return 'hello world';}}] // key is "hello world" Any object, including built-in objects such as Array, can be dynamically extended with new properties. For example: Array.prototype.removeAllObjects = function () { /* ... */ } In modern JavaScript it's considered bad form to use the Array type as an associative array. Consensus is that the Object type is best for this purpose. The reasoning behind this is that if Array is extended via prototype and Object is kept pristine, 'for(in)' loops will work as expected on associative 'arrays'. This issue has been drawn into focus by the popularity of JavaScript frameworks that make heavy and sometimes indiscriminate use of prototype to extend JavaScript's inbuilt types. See JavaScript Array And Object Prototype Awareness Day for more information on the issue. KornShell 93 (and compliant shells: ksh93, zsh, ...)
Definition: typeset -A phonebook; phonebook=(["Sally Smart"]="555-9999" ["John Doe"]="555-1212" ["J. Random Hacker"]="555-1337"); Dereference:
${phonebook["John Doe"]};
LispLisp was originally conceived as a "LISt Processing" language, and one of its most important data types is the linked list, which can be treated as an association list ("alist"). '(("Sally Smart" . "555-9999") ("John Doe" . "555-1212") ("J. Random Hacker" . "553-1337")) The syntax Because of their linear nature, alists are used for relatively small sets of data. Common Lisp also supports a hash table data type, and for Scheme they are implemented in SRFI 69. Hash tables have greater overhead than alists, but provide much faster access when there are many elements. It is easy to construct composite abstract data types in Lisp, using structures and/or the object-oriented programming features, in conjunction with lists, arrays, and hash tables. LPCLPC implements associative arrays as a fundamental type known as either map or mapping, depending on the driver. The keys and values can be of any type. A mapping literal is written as mapping phone_book = ([]); phone_book["Sally Smart"] = "555-9999"; phone_book["John Doe"] = "555-1212"; phone_book["J. Random Hacker"] = "555-1337"; Mappings are accessed for reading using the indexing operator in the same way as they are for writing, as shown above. So phone_book["Sally Smart"] would return the string "555-9999", and phone_book["John Smith"] would return 0. Testing for presence is done using the function member(), e.g. Deletion is accomplished using a function called either m_delete() or map_delete(), depending on the driver, used like: LPC drivers of the "Amylaar" family implement multivalued mappings using a secondary, numeric index. (Drivers of the MudOS family do not support multivalued mappings.) Example syntax: mapping phone_book = ([:2]); phone_book["Sally Smart", 0] = "555-9999"; phone_book["Sally Smart", 1] = "99 Sharp Way"; phone_book["John Doe", 0] = "555-1212"; phone_book["John Doe", 1] = "3 Nigma Drive"; phone_book["J. Random Hacker", 0] = "555-1337"; phone_book["J. Random Hacker", 1] = "77 Massachusetts Avenue"; LPC drivers modern enough to support a foreach() construct allow iteration over their mapping types using it. LuaIn Lua, table is a fundamental type that can be used either as array (numerical index, fast) or as associative array. The keys and values can be of any type, except nil. The following with focus on non-numerical indexes. A table literal is written as phone_book = { ["Sally Smart"] = "555-9999", ["John Doe"] = "555-1212", ["J. Random Hacker"] = "553-1337", -- Trailing comma is OK } aTable = { -- Table as value subTable = { 5, 7.5, k = true }, -- key is "subTable" -- Function as value ['John Doe'] = function (age) if age < 18 then return "Young" else return "Old!" end end, -- Table and function (and other types) can also be used as keys } If the key is a valid identifier (not a keyword), the quotes can be omitted. They are case sensitive. Lookup is written using either square brackets, which always works, or dot notation, which only works for identifier keys: print(aTable["John Doe"](45)) x = aTable.subTable.k You can also loop through all keys and associated values with iterators or for loops: simple = { [true] = 1, [false] = 0, [3.14] = math.pi, x = 'x', ["!"] = 42 } function FormatElement(key, value) return "[" .. tostring(key) .. "] = " .. value .. ", " end -- Iterate on all keys table.foreach(simple, function (k, v) io.write(FormatElement(k, v)) end) print"" for k, v in pairs(simple) do io.write(FormatElement(k, v)) end print"" k= nil repeat k, v = next(simple, k) if k ~= nil then io.write(FormatElement(k, v)) end until k == nil print"" An entry can be removed by setting it to nil:
simple.x = nil
Likewise, you can overwrite values or add them: simple['%'] = "percent" simple['!'] = 111 MUMPSIn MUMPS every array is an associative array. The built-in, language-level, direct support for associative arrays applies to private, process-specific arrays stored in memory called "locals" as well as to the permanent, shared arrays stored on disk which are available concurrently by multiple jobs. The name for globals is preceded by the circumflex "^" to distinguish it from local variable names.
SET ^phonebook("Sally Smart")="555-9999" ;; storing permanent data
SET phonebook("John Doe")="555-1212" ;; storing temporary data
SET phonebook("J. Random Hacker")="553-1337" ;;storing temporary data
MERGE ^phonebook=phonebook ;;copying temporary data into permanent data
To access the value of an element, simply requires using the name with the subscript:
WRITE "Phone Number :",^phonebook("Sally Smart"),!
You can also loop through an associated array as follows: SET NAME="" FOR S NAME=$ORDER(^phonebook(NAME)) QUIT:NAME="" WRITE NAME," Phone Number :",^phonebook(NAME),! OCamlThe OCaml programming language provides three different associative containers. The simplest is a list of pairs: # let m = [ "Sally Smart", "555-9999"; "John Doe", "555-1212"; "J. Random Hacker", "553-1337"];; val m : (string * string) list = [ ("Sally Smart", "555-9999"); ("John Doe", "555-1212"); ("J. Random Hacker", "553-1337") ] # List.assoc "John Doe" m;; - : string = "555-1212" The second is a polymorphic hash table: # let m = Hashtbl.create 3;; val m : ('_a, '_b) Hashtbl.t = <abstr> # Hashtbl.add m "Sally Smart" "555-9999"; Hashtbl.add m "John Doe" "555-1212"; Hashtbl.add m "J. Random Hacker" "553-1337";; - : unit = () # Hashtbl.find m "John Doe";; - : string = "555-1212" Finally, functional maps (represented as immutable balanced binary trees): # include (Map.Make(String));; ... # let m = add "Sally Smart" "555-9999" empty let m = add "John Doe" "555-1212" m let m = add "J. Random Hacker" "553-1337" m;; val m : string t = <abstr> # find "John Doe" m;; - : string = "555-1212" Lists of pairs and functional maps both provide a purely functional interface. In contrast, hash tables provide an imperative interface. For many operations, hash tables are significantly faster than lists of pairs and functional maps. OptimjThe Optimj programming language is an extension of Java 5. As java, Optimj provides maps. But, OptimJ also provides true associative arrays: java arrays are indexed with 0-based integers; associative arrays are indexed with any collection of keys. String[String] phoneBook = { "Sally Smart" -> "555-9999", "John Doe" -> "555-1212", "J. Random Hacker" -> "553-1337" }; // String[String] is not a java type but an optimj type: // associative array of strings indexed by strings. // iterate over the values for(String number : phoneBook) { System.out.println(number); } // The previous statement prints: "555-9999" "555-1212" "553-1337" // iterate over the keys for(String name : phoneBook.keys) { System.out.println(name + " -> " + phoneBook[name]); } // phoneBook[name] access a value by a key (it looks like java array access) // i.e. phoneBook["John Doe"] returns "555-1212" Of course, it is possible to define multi-dimensional arrays, to mix java array and associative arrays, to mix maps and associative arrays. int[String][][double] a; java.util.Map<String[Object], Integer> b; PerlPerl has built-in, language-level support for associative arrays. Modern Perl vernacular refers to associative arrays as hashes; the term associative array is found in older documentation, but is considered somewhat archaic. Perl hashes are flat: keys are strings and values are scalars. However, values may be references to arrays or other hashes, and the standard Perl module Tie::RefHash enables hashes to be used with reference keys. A hash variable is marked by a %phone_book = ( 'Sally Smart' => '555-9999', 'John Doe' => '555-1212', 'J. Random Hacker' => '553-1337', ); Accessing a hash element uses the syntax The list of keys and values can be extracted using the built-in functions foreach $name (keys %phone_book) { print $name, "\n"; } One can iterate through (key, value) pairs using the while (($name, $number) = each %phone_book) { print 'Number for ', $name, ': ', $number, "\n"; } A hash reference, which is a scalar value that points to a hash, is specified in literal form using curly braces as delimiters, with syntax otherwise similar to specifying a hash literal: $phone_book = { 'Sally Smart' => '555-9999', 'John Doe' => '555-1212', 'J. Random Hacker' => '553-1337', }; Values in a hash reference are accessed using the dereferencing operator: print $phone_book->{'Sally Smart'}; When the hash contained in the hash reference needs to be referred to as a whole, as with the foreach $name (keys %{$phone_book}) { print 'Number for ', $name, ': ', $phone_book->{$name}, "\n"; } PHPPHP's built-in array type is in reality an associative array. Even when using numerical indexes, PHP internally stores it as an associative array.[2] This is why one in PHP can have non-consecutive numerically indexed arrays. The keys have to be scalar values (string, floating point number or integer), while values can be of arbitrary types, including other arrays and objects. The arrays are heterogeneous; a single array can have keys of different types. PHP's associative arrays can be used to represent trees, lists, stacks, queues and other common data structures not built into PHP. An associative array can be declared using the following syntax: $phonebook = array (); $phonebook['Sally Smart'] = '555-9999'; $phonebook['John Doe'] = '555-1212'; $phonebook['J. Random Hacker'] = '555-1337'; // or $phonebook = array ( 'Sally Smart' => '555-9999', 'John Doe' => '555-1212', 'J. Random Hacker' => '555-1337', ); // or $phonebook['contacts']['Sally Smart']['number'] = '555-9999'; $phonebook['contacts']['John Doe']['number'] = '555-1212'; $phonebook['contacts']['J. Random Hacker']['number'] = '555-1337'; PHP can loop through an associative array as follows: foreach ($phonebook as $name => $number) { echo "Number for $name: $number\n"; } // For the last array example it is used like this foreach($phonebook['contacts'] as $name => $num) { echo "<div>Name:{$name}</div>"; echo "<div>Number:{$num['number']}</div>"; } PHP has an extensive set of functions to operate on arrays. PikePike has built-in support for Associative Arrays, which are referred to as mappings. Mappings are created as follows: mapping(string:string) phonebook = ([ "Sally Smart":"555-9999", "John Doe":"555-1212", "J. Random Hacker":"555-1337" ]); Accessing and testing for presence in mappings is done using the indexing operator. So Iterating through a mapping can be done using either foreach:
foreach(phonebook; string key; string value) {
write("%s:%s\n", key, value);
}
Or using an iterator object:
Mapping.Iterator i = get_iterator(phonebook);
while (i->index()) {
write("%s:%s\n", i->index(), i->value());
i->next();
}
Elements of a mapping can be removed using m_delete, which returns the value of the removed index: string sallys_number = m_delete(phonebook, "Sally Smart"); PostScriptIn PostScript, associative arrays are called dictionaries. In Level 1 PostScript they must be created explicitly, but Level 2 introduced direct declaration using the double-brace syntax:
Dictionaries can be accessed directly using get or implicitly by placing the dictionary on the dictionary stack using begin:
Dictionary contents can be iterated through using forall, though not in any particular order:
May well output:
Dictionaries can be augmented (up to their defined size only in Level 1) or altered using put, and entries can be removed using undef:
PythonIn Python, associative arrays are called dictionaries. Dictionary literals are marked with curly braces: phonebook = { 'Sally Smart' : '555-9999', 'John Doe' : '555-1212', 'J. Random Hacker' : '553-1337' } To access an entry in Python simply use the array indexing operator. For example, the expression An example loop iterating through all the keys of the dictionary: for key in phonebook: print key, phonebook[key] Iterating through (key, value) tuples: for key, value in phonebook.iteritems(): print key, value Dictionaries can also be constructed with the dict((key, value) for key, value in phonebook.items() if 'J' in key) Dictionary keys can be individually deleted using the del statement. The corresponding value can be returned before the key-value pair are deleted using the pop method of dict types; del phonebook['John Doe'] val = phonebook.pop('Sally Smart') assert phonebook.keys() == ['J. Random Hacker'] # Only one key left REXXIn REXX, associative arrays are called Stem variables or Compound variables. KEY = 'Sally Smart' PHONEBOOK.KEY = '555-9999' KEY = 'John Doe' PHONEBOOK.KEY = '555-1212' KEY = 'J. Ramdon Hacker' PHONEBOOK.KEY = '553-1337' Stem variables with numeric keys typically start at 1 and go up from there. The 0 key stem variable is used (by convention) as the count of items in the whole stem. NAME.1 = 'Sally Smart' NAME.2 = 'John Doe' NAME.3 = 'J. Random Hacker' NAME.0 = 3 REXX has no easy way of automatically accessing the keys for a stem variable and typically the keys are stored in a separate associative array with numeric keys. RubyIn Ruby a Hash is used as follows: phonebook = { 'Sally Smart' => '555-9999', 'John Doe' => '555-1212', 'J. Random Hacker' => '553-1337' } phonebook['John Doe']; #produces this -> '555-1212'
### iterate over keys and values phonebook.each {|key, value| puts key + " => " + value} ### iterate keys only phonebook.each_key {|key| puts key} ### iterate values only phonebook.each_value {|value| puts value} S-LangS-Lang has an associative array type. For example: phonebook = Assoc_Type[]; phonebook["Sally Smart"] = "555-9999" phonebook["John Doe"] = "555-1212" phonebook["J. Random Hacker"] = "555-1337" You can also loop through an associated array in a number of ways. Here is one foreach name (phonebook) { vmessage ("%s %s", name, phonebook[name]; } To print a sorted-list, it is better to take advantage of S-lang's strong support for standard arrays: keys = assoc_get_keys(phonebook); i = array_sort(keys); vals = assoc_get_values(phonebook); array_map (Void_Type, &vmessage, "%s %s", keys[i], vals[i]); SmalltalkIn Smalltalk a dictionary is used: phonebook := Dictionary new. phonebook at: 'Sally Smart' put: '555-9999'. phonebook at: 'John Doe' put: '555-1212'. phonebook at: 'J. Random Hacker' put: '553-1337'. To access an entry the message
phonebook at: 'Sally Smart'
gives '555-9999' SNOBOLSNOBOL is one of the first (if not the first) programming languages to use associative arrays. Associative arrays in SNOBOL are called Tables. PHONEBOOK = TABLE() PHONEBOOK['Sally Smart'] = '555-9999' PHONEBOOK['John Doe'] = '555-1212' PHONEBOOK['J. Random Hacker'] = '553-1337' TclIn Tcl every array is an associative array. As of Tcl 8.5, there is also the dict command that operates on dictionary values; arrays are always variables. set "phonebook(Sally Smart)" 555-9999 set john "John Doe" set phonebook($john) 555-1212 set "phonebook(J. Random Hacker)" 553-1337 The first argument of the Alternatively, several array elements can be set in a single command by providing their mappings as a dictionary (keys braced because they contain whitespace): array set phonebook { {Sally Smart} 555-9999 {John Doe} 555-1212 {J. Random Hacker} 553-1337 }
puts "$phonebook(Sally Smart)" The result is here 555-9999 To retrive the entire array as a dictionary: array get phonebook The result can be (order of keys is unspecified): {Sally Smart} 555-9999 {J. Random Hacker} 553-1337 {John Doe} 555-1212 Visual BasicThere is no standard implementation common to all dialects. Visual Basic can use the Dictionary class from the Microsoft Scripting Runtime (which is shipped with Visual Basic 6): ' Requires a reference to SCRRUN.DLL in Project Properties Dim phoneBook As New Dictionary phoneBook.Add "Sally Smart", "555-9999" phoneBook.Item("John Doe") = "555-1212" phoneBook("J. Random Hacker") = "553-1337" For Each name In phoneBook MsgBox name & " = " & phoneBook(name) Next Visual Basic .NET relies on the collection classes provided by .NET Framework: Dim phoneBook As New System.Collections.Generic.Dictionary(Of String, String) phoneBook("Sally Smart") = "555-9999" phoneBook("John Doe") = "555-1212" phoneBook("J. Random Hacker") = "553-1337" For Each entry As KeyValuePair(Of String, String) In phoneBook MessageBox.Show(entry.Key & " = " & entry.Value) Next Windows PowerShellUnlike many other command line interpreters, PowerShell has built-in, language-level support for defining associative arrays. For example:
$phonebook = @{
'Sally Smart' = '555-9999';
'John Doe' = '555-1212';
'J. Random Hacker' = '553-1337'
}
Like in JavaScript, if the property name is a valid identifier, the quotes can be omitted, e.g.:
$myOtherObject = @{ foo = 42; bar = $false }
Entries can be separated by either a semicolon or a newline, e.g.:
$myOtherObject = @{ foo = 42
bar = $false ;
zaz = 3
}
Keys and values can be any .NET object type, e.g.:
$now = [DateTime]::Now
$tomorrow = $now.AddDays(1)
$ProcessDeletionSchedule = @{
(Get-Process notepad) = $now
(Get-Process calc) = $tomorrow
}
It is also possible to create an empty associative array and add single entries or even other associative arrays to it later on.
$phonebook = @{}
$phonebook += @{ 'Sally Smart' = '555-9999' }
$phonebook += @{ 'John Doe' = '555-1212'; 'J. Random Hacker' = '553-1337' }
New entries can also be added by using the array index operator, the property operator or the
$phonebook = @{}
$phonebook['Sally Smart'] = '555-9999'
$phonebook.'John Doe' = '555-1212'
$phonebook.Add('J. Random Hacker', '553-1337')
To dereference assigned objects the array index operator, the property operator or the parameterized property
$phonebook['Sally Smart']
$phonebook.'John Doe'
$phonebook.Item('J. Random Hacker')
You can loop through an associative array as follows:
$phonebook.Keys | foreach { "Number for {0}: {1}" -f $_,$phonebook.$_ }
An entry can be removed using the
$phonebook.Remove('Sally Smart')
Hash tables can be added, e.g.:
$hash1 = @{ a=1; b=2 }
$hash2 = @{ c=3; d=4 }
$hash3 = $hash1 + $hash2
References
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net