Core Function Sort

From Sputnik Wiki
Jump to: navigation, search
Sort( <array>, <flag>, <function> )

Contents

Description

Sort an array by value or keys optionally modify it in place or return new and optionally use a custom function to decide how to sort it.

Parameters

array

The array to order.

flag

Optional; The flag which determines how the sort works

Flag 1 = Modify array in place and return only a 1 on success and 0 on failure

Flag 2 = Sort by Keys instead of Values

Flag 4 = Ignore case when sorting (when using only 2 params)

Flag 8 = Compares by evaluating the numeric values of the corresponding Chars in each value/key (when using only 2 params) (Note - Flag 4 is ignored on this setting)

Flag 16 = Include the keys if you are comparing values or include the values if you are comparing keys (When using 3 params)

Default: 0 = Sort by values and do not modify original array instead return a copy

function

Optional; If this parameter exists and contains a valid function it will be used to handle the sort

Return Value

If Flag is 0:

Returns new array on success and empty array on failure

If Flag is 1:

Returns true on success and false on failure

Remarks

If no function is given the sort will be alphabetical

Example

// Example of most basic usage to alphabetically sort by values

my $arr = qw(gg bb aa zz dd ff ee);
 
// Flag 0 default flag
my $newarray = sort($arr);
 
printr($newarray);


// Example of basic usage to alphabetically sort by keys

my $arr = array("ZZZ" => "FoX", "AAA" => "Cat", "DDD" => "Frog");
 
// Flag 0 default flag
my $newarray = sort($arr, 2);
 
printr($newarray);

// Example of using a function to sort by values

my $arr = qw(1 2 3 4 5 6 7 8 9);
 
// Flag 0 default flag
my $newarray = sort($arr, 0, Function( $a, $b ){ return $a > $b; });
 
printr($newarray);

// Example of using a function to sort by keys

my $arr = qw(1 2 3 4 5 6 7 8 9);
 
// Flag 1 to no return a new array
// Flag 2 to sort by KEYS instead of values
sort($arr, 1 | 2, Function( $a, $b ){ return $a > $b; });
 
printr($arr);

// Example of using an operation to sort

my $arr = array(
    "A",
    "C",
    "b",
    "f",
    "G",
    "e",
    "h",
    "D"
);
 
// Print H to A
my $newarray = sort($arr, 0, $b <=> $a);
printr($newarray);
 
// Print A to H
my $newarray = sort($arr, 0, $a <=> $b);
printr($newarray);

// Example of using natural order comparison to order stuff such as file names

$arr = array("img12.png", "img10.png", "img2.png", "img1.png");
say "Without sorting";
printr($arr);
sort($arr, 1, Function( $a, $b ){ return StrNatCmp($a, $b, true); });
say "After natural sorting";
printr($arr);
/*
Without sorting
ARRAY
{
        [0] => img12.png
        [1] => img10.png
        [2] => img2.png
        [3] => img1.png
}
After natural sorting
ARRAY
{
        [0] => img1.png
        [1] => img2.png
        [2] => img10.png
        [3] => img12.png
}
*/
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox