我正在使用此usort函数按值对数组进行排序:
function cmp($a, $b)
{
if ($a["value"] == $b["value"])
{ return 0; }
return ($a["value"] < $b["value"]) ? -1 : 1;
}
现在,每个对象也有一个“活动”字段,即:$ a [“active”]。我想让排序的数组首先按值排序有效的(1),然后,当它们全部排序时,非活动的(0)。在此之后我尝试使用另一个usort但它不能很好地工作,它有点扰乱它们。
提前致谢。
答案 0 :(得分:1)
function cmp($a,$b){
if ($a["active"]==$b["active"]){
if($a["value"]==$b["value"])
return 0;
return $a["value"]>$b["value"])?1:-1;
}
return $a["active"]>$b["active"]?1:-1;
}
未经测试 - 但我认为它会起作用。 这种东西的一个很好的资源(但不是这个特殊的例子,不幸的是你):http://www.the-art-of-web.com/php/sortarray/
答案 1 :(得分:0)
只需在活动中添加活动内容作为另一种比较:
if ($a['active'] > $b['active'])
return 1;
} else if ($a['value'] == $b['value']) {
return 0;
} else {
return ($a['value'] < $b['value']) ? -1 : 1;
}