按特定键的值对数组进行排序

Cap*_*arl 2 php arrays sorting

我有一个这样的阵列:

$currentTerm = array(
  'name' => $term->name,
  'weight' => $term->weight
);
Run Code Online (Sandbox Code Playgroud)

我想用weight密钥对整个数组进行排序.我无法弄清楚如何实现这一目标.有什么想法或者我应该为此编写自定义功能吗?

PS一些重量可以相同; 所以将它们存储为钥匙不是一种选择.并且它是多维的,具有子键,以与上面相同的方式递归填充.

And*_*ius 5

您可以创建自定义排序方法usort().

它的工作原理与此类似:

usort($array, function($a,$b) {
    if($a->weight === $b->weight) return 0;
    return ($a->weight < $b->weight) ? -1 : 1;
});
Run Code Online (Sandbox Code Playgroud)

如果来自PHP7未来的人来到这里,他们可以使用这个(宇宙飞船!):

usort($array, function($a,$b) {
    return $a->weight <=> $b->weight;
});
Run Code Online (Sandbox Code Playgroud)

PHP7之前的完整(和繁琐)示例将是:

<?php
class Obj {
    public $name;
    public $weight;

    function __construct($name,$weight) {
        $this->name = $name;
        $this->weight = $weight;
    }
}
$array = array(
    new Obj("A",3),
    new Obj("B",10),
    new Obj("C",8),
);

usort($array, function($a,$b) {
    if($a->weight == $b->weight) return 0;
    return ($a->weight < $b->weight) ? -1 : 1;
});

print_r($array);

?>
Run Code Online (Sandbox Code Playgroud)