* Extends ArrayObject to implement a aliased key array. Allows for any number of
* unique keys (alias keys) pointing to an array element.
*
* CAUTION: This will not handle multi-dimension arrays like you can't
* do this:
*
* $a = new AliasedArray();
* $a[1][2] = 25;
*
* This will not work and will not generate an error.
*
* To add an element you first have to add an indexed data element
*
* $a = new AliasedArray();
* $a->set(key, data);
* $a[key] = data;
*
* You can also add an existing array:
*
* $a = new AliasedArray($existingArray);
*
* After an element has been added you can add an alias for the key. The
* alias is not allowed to match a key.
*
* $a->alias(key, alias);
*
* The following would throw an exception:
*
* $a->set('a', 10);
* $a->set('b', 20);
* $a->alias('a', 'b');
*
* because the alias 'a' is already used as a key.
* If the key does not exist, an exception will be thrown.
* So for example these will work:
*
* $a->set(1, 'thedata');
* $a->alias(1, 'theabc');
* or
* $a['key1'] = 'newdata';
* $a->alias('key1', 'alias1');
*
* To get the data
*
* $a->get(1); // returns 'thedata'
* $a[1]; // ditto
* $a['key1']; // returns 'newdata'
* $a['alias1']; // ditto
*
* if the element for the key or the index does not exist then a
* NULL will be returned. You can unset key and alias(es). If you unset
* by key then the key/value will be unset and any aliases pointing to the
* value will be unset. If you unset an alias only that alias will be unset.
*
* unset($a['key1']);
* unset($a['alias1']);
*
* Iterators iterate across the key array and ignore the alias array.
|