Php 用户定义排序函数的帮助

Php 用户定义排序函数的帮助,php,sorting,usort,Php,Sorting,Usort,我正在usort()中使用此函数。预期的效果是,搜索列表将首先按是否具有类ID排序,然后按结果排序(使用非空的结果数组>结果===false>结果===empty array()。因此,排序后的搜索集如下所示: function sort_searches($a, $b) { return ( (isset($b['Class_ID']) && !isset($a['Class_ID'])) || ($b['Res

我正在
usort()
中使用此函数。预期的效果是,搜索列表将首先按是否具有类ID排序,然后按结果排序(使用非空的结果数组>结果===false>结果===empty array()。因此,排序后的搜索集如下所示:

function sort_searches($a, $b)
{
    return
    (
        (isset($b['Class_ID']) && !isset($a['Class_ID'])) 
        ||
        ($b['Results'] && !$a['Results']) 
        || 
        (is_array($a['Results']) && !$a['Results'] && !is_array($b['Results']))
    );
}
目前,这些函数完全可以根据结果进行排序,但不能根据搜索是否有Class_ID进行排序

Class_ID with results
Class_ID with results === false
Class_ID with results === array()
No Class_ID with results
No Class_ID with results === false
No Class_ID with results === array()
发件人:

如果第一个参数分别小于、等于或大于第二个参数,则比较函数必须返回小于、等于或大于零的整数

您的函数没有返回整数


为了说明这一点,假设我们想为数字编写一个排序函数(完全没有必要,但只是为了练习):

函数排序\u nums($a,$b)
{
如果($a<$b)返回-1;//$a小于$b
如果($a>$b)返回1;//$a大于$b
返回0;//$a等于$b
}

请重新阅读您的帖子。基本上,您是说我需要在$a<$b时返回-1,而不是0?谢谢,我会尝试一下并回复您
usort($searches, 'sort_searches')
function sort_nums($a, $b)
{
    if ($a < $b) return -1; // $a is less than $b
    if ($a > $b) return 1; // $a is greater than $b
    return 0; // $a is equal to $b
}