public static function index($Data, $Columns, $Options = array())
{
$Columns = (array) $Columns;
$Result = array();
$Options = array_change_key_case($Options);
if (is_string($Options)) {
$Options = array('sep' => $Options);
}
$Sep = val('sep', $Options, '|');
$Unique = val('unique', $Options, true);
foreach ($Data as $Row) {
$IndexValues = array();
foreach ($Columns as $Column) {
$IndexValues[] = val($Column, $Row);
}
$Index = implode($Sep, $IndexValues);
if ($Unique) {
$Result[$Index] = $Row;
} else {
$Result[$Index][] = $Row;
}
}
return $Result;
}