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']))
);
}
我在usort()
中使用此功能。预期的效果是,搜索列表将首先按其是否具有Class_ID进行排序,然后按结果排序(使用非空结果数组>结果=== false> results === empty array()所以一组有序的搜索结果如下:
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()
目前,函数对结果排序完全正常,但不是搜索是否具有Class_ID。
usort($searches, 'sort_searches')
答案 0 :(得分:1)
来自the PHP docs:
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
您的函数未返回整数。
要拼写出来,假设我们想为数字编写一个排序函数(完全没必要,但是对于练习):
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
}