| Extracted from Pike v7.8 release 866 at 2016-04-05.

[Top]

# Method `[]()

Method `[]

  `mixed `[](object arg, mixed index)`
  `mixed `[](object arg, string index)`
  `function `[](int arg, string index)`
  `int `[](string arg, int index)`
  `mixed `[](array arg, int index)`
  `mixed `[](array arg, mixed index)`
  `mixed `[](mapping arg, mixed index)`
  `int(0..1) `[](multiset arg, mixed index)`
  `mixed `[](program arg, string index)`
  `mixed `[](object arg, mixed start, mixed end)`
  `string `[](string arg, int start, int end)`
  `array `[](array arg, int start, int end)`

Description

  Indexing.

  This is the function form of expressions with the `[]` operator, i.e. `a[i]` is the same as `predef::`[](a,i)`.

Returns

  If arg is an object that implements lfun::`[]() , that function is called with the index argument.

  Otherwise, the action depends on the type of arg :

  `arg` can have any of the following types:

  `object` | The non-protected (i.e. public) symbol named index is looked up in arg .
  `int` | The bignum function named index is looked up in arg . The bignum functions are the same as those in the Gmp.mpz class.
  `string` | The character at index index in arg is returned as an integer. The first character in the string is at index `0` and the highest allowed index is therefore `sizeof(<font face='courier'>arg` )-1. A negative index number accesses the string from the end instead, from `-1` for the last char back to `-sizeof(<font face='courier'>arg` ) for the first.

  `array`

  If index is an int, index number index of arg is returned. Allowed index number are in the range `[-sizeof(<font face='courier'>arg` )..sizeof(<font face='courier'>arg )-1]; see the string case above for details.

  If index is not an int, an array of all elements in arg indexed with index are returned. I.e. it's the same as doing `column(<font face='courier'>arg` , <font face='courier'>index ).

  `mapping` | If index exists in arg the corresponding value is returned. Otherwise `UNDEFINED` is returned.
  `multiset` | If index exists in arg , `1` is returned. Otherwise `UNDEFINED` is returned.
  `program` | The non-protected (i.e. public) constant symbol index is looked up in arg .

  As a compatibility measure, this function also performs range operations if it's called with three arguments. In that case it becomes equivalent to:

  `[..] (arg, start, Pike.INDEX_FROM_BEG , end, Pike.INDEX_FROM_BEG )

See `[..] for further details.

Note

  An indexing expression in an lvalue context, i.e. where the index is being assigned a new value, uses `[]= instead of this function.

See also

  `->() , lfun::`[]() , `[]= , `[..]