Skip to content

IEnumerable.orderByDescending() method

Marcel Kloubert edited this page Oct 2, 2015 · 10 revisions

IEnumerable->orderByDescending($selector [, $comparer ]) method

Sorts the sequence in descending order (s. OrderByDescending()).

Syntax

public function orderByDescending(callable $selector
                                  [, comparer $comparer = null ]) : IEnumerable;

Parameters

Name Type Description
$selector [[callable Callable]]
$comparer [[comparer Comparer]]

$selector

Provides the sort value.

function (mixed $item, IIndexedItemContext $ctx) : mixed;

$item

The current (original) item.

$ctx

The current item context.

$comparer

The sort algorithm / comparer.

Result

The new ordered sequence.

Examples

Simple (lambda expression)

$seq = Enumerable::fromValues(2, 3, 1);

$seq = Enumerable::create(['b' => 2, 'c' => 3, 'a' => 1]);

foreach ($seq->orderByDescending('$x => $x') as $key => $item) {
    // $key => 'c'; $item => 3
    // $key => 'b'; $item => 2
    // $key => 'a'; $item => 1
}

Simple (closure)

$seq = Enumerable::fromValues(2, 3, 1);

$seq = Enumerable::create(['b' => 2, 'c' => 3, 'a' => 1]);

foreach ($seq->orderByDescending(function($x) {
                                     return $x; 
                                 }) as $key => $item) {
    // $key => 'c'; $item => 3
    // $key => 'b'; $item => 2
    // $key => 'a'; $item => 1
}

Custom algorithm (lambda)

$seq = Enumerable::create(['b' => 2, 'c' => 3, 'a' => 1]);

foreach ($seq->orderByDescending('$x => $x',
                                 '($x, $y) => strcmp($y, $x)') as $key => $item) {
    // $key => 'a'; $item => 1
    // $key => 'b'; $item => 2
    // $key => 'c'; $item => 3
}

Custom algorithm (closure)

$seq = Enumerable::create(['b' => 2, 'c' => 3, 'a' => 1]);

foreach ($seq->orderByDescending(true,  // indicates to use the item itself
                                        // as sort value  
                                 function ($x, $y) {
                                     return strcmp($y, $x);
                                 }) as $key => $item) {
    // $key => 'a'; $item => 1
    // $key => 'b'; $item => 2
    // $key => 'c'; $item => 3
}
Clone this wiki locally