manpagez: man pages & more
info gawk
Home | html | info | man
 [ << ] [ < ] [ Up ] [ > ] [ >> ] [Top] [Contents] [Index] [ ? ]

## 12.7 Traversing Arrays of Arrays

Arrays of Arrays, described how `gawk` provides arrays of arrays. In particular, any element of an array may be either a scalar, or another array. The `isarray()` function (see section Getting Type Information) lets you distinguish an array from a scalar. The following function, `walk_array()`, recursively traverses an array, printing each element’s indices and value. You call it with the array and a string representing the name of the array:

```function walk_array(arr, name,      i)
{
for (i in arr) {
if (isarray(arr[i]))
walk_array(arr[i], (name "[" i "]"))
else
printf("%s[%s] = %s\n", name, i, arr[i])
}
}
```

It works by looping over each element of the array. If any given element is itself an array, the function calls itself recursively, passing the subarray and a new string representing the current index. Otherwise, the function simply prints the element’s name, index, and value. Here is a main program to demonstrate:

```BEGIN {
a[1] = 1
a[2][1] = 21
a[2][2] = 22
a[3] = 3
a[4][1][1] = 411
a[4][2] = 42

walk_array(a, "a")
}
```

When run, the program produces the following output:

```\$ gawk -f walk_array.awk
-| a[4][1][1] = 411
-| a[4][2] = 42
-| a[1] = 1
-| a[2][1] = 21
-| a[2][2] = 22
-| a[3] = 3
```

 [ << ] [ < ] [ Up ] [ > ] [ >> ] [Top] [Contents] [Index] [ ? ]

This document was generated on March 30, 2012 using texi2html 5.0.

```© manpagez.com 2000-2017