manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Reference to Elements,  Next: Assigning Elements,  Prev: Array Intro,  Up: Array Basics

8.1.2 Referring to an Array Element
-----------------------------------

The principal way to use an array is to refer to one of its elements.
An "array reference" is an expression as follows:

     ARRAY[INDEX-EXPRESSION]

Here, ARRAY is the name of an array.  The expression INDEX-EXPRESSION is
the index of the desired element of the array.

   The value of the array reference is the current value of that array
element.  For example, 'foo[4.3]' is an expression referencing the
element of array 'foo' at index '4.3'.

   A reference to an array element that has no recorded value yields a
value of '""', the null string.  This includes elements that have not
been assigned any value as well as elements that have been deleted
(*note Delete::).

     NOTE: A reference to an element that does not exist _automatically_
     creates that array element, with the null string as its value.  (In
     some cases, this is unfortunate, because it might waste memory
     inside 'awk'.)

     Novice 'awk' programmers often make the mistake of checking if an
     element exists by checking if the value is empty:

          # Check if "foo" exists in a:         Incorrect!
          if (a["foo"] != "") ...

     This is incorrect for two reasons.  First, it _creates_ 'a["foo"]'
     if it didn't exist before!  Second, it is valid (if a bit unusual)
     to set an array element equal to the empty string.

   To determine whether an element exists in an array at a certain
index, use the following expression:

     INDX in ARRAY

This expression tests whether the particular index INDX exists, without
the side effect of creating that element if it is not present.  The
expression has the value one (true) if 'ARRAY[INDX]' exists and zero
(false) if it does not exist.  (We use INDX here, because 'index' is the
name of a built-in function.)  For example, this statement tests whether
the array 'frequencies' contains the index '2':

     if (2 in frequencies)
         print "Subscript 2 is present."

   Note that this is _not_ a test of whether the array 'frequencies'
contains an element whose _value_ is two.  There is no way to do that
except to scan all the elements.  Also, this _does not_ create
'frequencies[2]', while the following (incorrect) alternative does:

     if (frequencies[2] != "")
         print "Subscript 2 is present."

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.