# Associative Arrays

SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it.

Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as `global` variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of `awk`, and is as follows:

    array_name[index_expression]

Here, the `array_name` is any arbitrary name the array uses. The `index_expression` is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named `foo` that specifies the ages of three people (i.e. the unique keys): `tom`, `dick`, and `harry`. To assign them the ages (i.e. associated values) of 23, 24, and 25 respectively, we'd use the following array statements:

Basic Array Statements

    foo["tom"] = 23
    foo["dick"] = 24
    foo["harry"] = 25

You can specify up to nine index expressions in an array statement, each one delimited by a comma (`,`). This is useful if you wish to have a key that contains multiple pieces of information. The following line from uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of `devname` with that key.

    device[pid(),execname(),uid(),ppid(),"W"] = devname

Important

All associate arrays must be declared as `global`, regardless of whether the associate array is used in one or multiple probes.

arrays associative arrays
associative arrays introduction
associative arrays introduction key pairs
key pairs introduction arrays
associative arrays introduction unique keys
unique keys introduction arrays
associative arrays introduction associated values
associated values introduction arrays
associative arrays introduction index expression
index expression introduction arrays
associative arrays introduction syntax
syntax introduction arrays
format introduction arrays
associative arrays introduction example
example introduction arrays