【发布时间】:2014-03-19 13:45:17
【问题描述】:
我有以下两个数组:
数组1
[0] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24 [reg] => 1
)
[1] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
[reg] => 2
)
数组2
[0] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24
)
[1] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24
)
[2] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
)
[3] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
)
我已经使用 array_merge 合并了这两个数组,新数组是 array3
我使用以下函数对 array3 进行了排序:
function cmp($a, $b) {
return strnatcasecmp( $a[course_id], $b[course_id] );
}
usort($array3, "cmp");
但是,我希望得到的结果并没有像我想要的那样显示在下面,其中数组 1 中的 course_id=1 始终位于顶部,然后是数组 2 中匹配的 Course_id 列表,然后是数组中的 course_id = 2 1,后跟数组 2 中匹配的 Course_id 列表。:
[0] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24
[reg] => 1
)
[1] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24
)
[2] => Array
(
[date] => 2014-02-01
[course_id] => 1
[id] => 24
)
[3] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
[reg] => 2
)
[4] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
)
[5] => Array
(
[date] => 2014-02-01
[course_id] => 2
[id] => 25
)
我用来对数组 3 进行排序的函数并不总是提供所需的结果。请您帮忙解答一下这个问题。
【问题讨论】:
-
手册引用 (php.net/manual/en/function.usort.php):
The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.