我有一个像这样的对象:
<?php
class Change {
private $prop1, $prop2, $prop3;
public function __construct($prop1, $prop2, $prop3) {
$this->$prop1=$prop1;
$this->$prop2=$prop2;
$this->$prop3=$prop3;
}
public function getProp1() {
return $this->prop1;
}
public function getProp2() {
return $this->prop2;
}
public function getProp3() {
return $this->prop3;
}
}
?>
我删除了一些细节,但这通常是对象的内容。现在,我想对顶部prop1
不等于NULL
的对象进行排序,然后按prop2
的特定值排序。 Prop2
可以等于“高”,“中”,“低”,“严重”或用户输入的任何其他值。我想按此顺序对它们进行排序:严重,高,中,低,其他一切。最后,我想按字母顺序排序prop3
。
这可能与usort有关吗?有更简单的方法吗?
排序顺序:
Prop1
- 不是NULL
Prop2
- “严重”,“高”,“中”,“低”,* Prop3
- 按字母顺序排列答案 0 :(得分:1)
function sort($a,$b){
$criteria = array('Critical'=>4,'High'=>3,'Medium'=>2,'Low'=>1);
if($a.Prop1 != NULL && $b.Prop1 == NULL) return -1;
if($criteria[$a.Prop2] != $criteria[$b.Prop2]) {
if($criteria[$a.Prop2] < $criteria[$b.Prop2]){
return -1;
}else{
return 1;
}
}
return strcmp($a.Prop3,$b.Prop3);
}
抱歉,我没有测试它,但必须以这种方式工作