Cap*_*arl 2 php arrays sorting
我有一个这样的阵列:
$currentTerm = array(
'name' => $term->name,
'weight' => $term->weight
);
Run Code Online (Sandbox Code Playgroud)
我想用weight密钥对整个数组进行排序.我无法弄清楚如何实现这一目标.有什么想法或者我应该为此编写自定义功能吗?
PS一些重量可以相同; 所以将它们存储为钥匙不是一种选择.并且它是多维的,具有子键,以与上面相同的方式递归填充.
您可以创建自定义排序方法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)
| 归档时间: |
|
| 查看次数: |
5885 次 |
| 最近记录: |