unique_array() - partitions an array of objects into groups


mixed unique_array( object *obarr, string separator, void | mixed skip);
mixed unique_array( mixed *arr, function f, void | mixed skip );


Groups objects together for which the 'separator' function returns  the
same  value.  'obarr'  should  be  an array of objects, other types are
ignored.  The 'separator' function is called only once in  each  object
in  'obarr'.   THe  optional  'skip'  parameter enables a pre-filter on
'obarr', skipping elements which match 'skip'.  The second form works a
bit differently.  each element of the array is passed to f and the ele‐
ments are partitioned based on the return value of f.   In  particular,
the array does not need to be composed of objects.


The return value is an array of arrays of objects on the form:

    ({Same1:1, Same1:2, Same1:3, .... Same1:N }),
    ({Same2:1, Same2:2, Same2:3, .... Same2:N }),
    ({Same3:1, Same3:2, Same3:3, .... Same3:N }),
    ({SameM:1, SameM:2, SameM:3, .... SameM:N }),