通过布尔字段对关联数组进行排序

mar*_*ank 3 php sorting

$list 这样填充: -

$list[$i++] = array(
    "date" => $date,
    "desc" => $desc,
    "priority" => $priority
);
Run Code Online (Sandbox Code Playgroud)

$priorityTRUE如果它符合某些条件,则设置为.

我希望$list使用TRUE在顶部具有优先级的行进行排序.

该列表已按日期排序,我希望保留.

Kin*_*nch 11

在PHP> = 5.3

usort ($array, function ($left, $right) {
    return $left['priority'] - $right['priority'];
});
Run Code Online (Sandbox Code Playgroud)

或者在早期版本中

function cmp($left, $right) {
    return $left['priority'] - $right['priority'];
}
usort($array, 'cmp');
Run Code Online (Sandbox Code Playgroud)

或者使用create_function()(也适用于版本<5.3)

usort ($array, create_function('$left,$right', 'return $left[\'priority\'] - $right[\'priority\'];'));
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为(int) true === 1(int) false === 0

true - true == 0
true - false == 1
false - true == -1
false - false == 0
Run Code Online (Sandbox Code Playgroud)