Logo

Programming-Idioms

History of Idiom 28 > diff from v28 to v29

Edit summary for version 29 by :
[PHP] matching naming conventions

Version 28

2016-02-18, 15:34:44

Version 29

2016-02-18, 15:37:16

Idiom #28 Sort by a property

Sort elements of array-like collection items in ascending order of x.p, where p is a field of type Item of the objects in items.

Idiom #28 Sort by a property

Sort elements of array-like collection items in ascending order of x.p, where p is a field of type Item of the objects in items.

Code
class Test
{
    public $p;

    public function __construct($p)
    {
        $this->p = $p;
    }
}

function cmp($a, $b)
{
    if ($a->p == $b->p) {
        return 0;
    }

    return ($a->p < $b->p) ? -1 : 1;
}

$arr[] = new Test(5.0);
$arr[] = new Test(3.0);
$arr[] = new Test(-1.0);
$arr[] = new Test(2.5);

usort($arr, "cmp");

foreach ($arr as $x) {
    echo "{$x->p}\n";
}
Code
class Item
{
    public $p;

    public function __construct($p)
    {
        $this->p = $p;
    }
}

function cmp($a, $b)
{
    if ($a->p == $b->p) {
        return 0;
    }

    return ($a->p < $b->p) ? -1 : 1;
}

$items[] = new Item(5.0);
$items[] = new Item(3.0);
$items[] = new Item(-1.0);
$items[] = new Item(2.5);

usort($items, "cmp"); // sort itemsay of Items using `cmp` function

foreach ($items as $x) {
    echo "{$x->p}\n";
}
Comments bubble
Classic use of usort with a custom function for sorting objects by property.
Comments bubble
Classic use of usort with a custom function for sorting objects by property.
Doc URL
http://php.net/manual/en/function.usort.php
Doc URL
http://php.net/manual/en/function.usort.php
Demo URL
http://codepad.org/dvWYDw9x
Demo URL
http://codepad.org/OsWlhVpV