按值对对象的键控数组进行排序


Sorting a keyed array of objects by value

我一直在尝试使用usort()根据包含在其中的对象实例变量值对键控数组进行排序,但它似乎不是正确的工具。希望有人能对如下所示的对象进行排序。

提前感谢!

$ary = array("apple" => object DatePrice ("date" => "2015-12-01", "price" => 3), 
               "orange" => object DatePrice ("date" => "2015-12-02", "price" => 4), 
               "banana" => object DatePrice ("date" => "2015-12-01", "price" => 0.50),
               "pear" => object DatePrice("date" => "2015-12-01", "price" => 1),
                );

期望结果:

$ary = array("orange" =>object DatePrice("date" => "2015-12-02", "price" => 4),
              "apple" => object DatePrice("date" => "2015-12-01", "price" => 3), 
               "pear" => object DatePrice("date" => "2015-12-01", "price" => 1),
                "banana" => object DatePrice("date" => "2015-12-01", "price" => 0.50));

找到这篇文章:按对象字段排序对象数组

但我需要对对象的键控数组进行排序。。

类似的东西。。。

uasort($ary, function ($a, $b) {
    return floatval($b['price']) - floatval($a['price']);
});

对于对象,它不会有太大变化,它只是一个函数,请在这里检查您需要的任何内容。。。

uasort($ary, function ($a, $b) {
    return floatval($b->price) - floatval($a->price);
});

查看array_multisort()。使用该方法,您可以根据关键字对(多维)数组进行排序,并指定其排序顺序。