好的我有以下数组:
Array
(
[0] => Array
(
[id] => 6
[name] => This Course
[time] => 1288082700
[description] => blah blah .
[link] => http://this.com/?g=5
[course] => 22
)
[1] => Array
(
[id] => 2
[name] => Workshop
[time] => 1287561600
[description] => This description
[link] => http://this.com/?g=5
[session] => 8
[course] => 23
[type] => standard
[adobelink] =>
)
)
如何使用内部'time'键对整个数组进行排序?
谢谢!
答案 0 :(得分:5)
您可以将usort
功能用作:
function cmp($a,$b) {
return $a['time'] - $b['time'];
}
usort($arr,'cmp');
答案 1 :(得分:4)
使用usort()
:
此函数将使用用户提供的比较函数按其值对数组进行排序。如果要排序的数组需要按照一些非平凡的标准进行排序,则应使用此函数。
示例:
function cmp($a, $b) {
if ($a['time'] == $b['time']) {
return 0;
}
return ($a['time'] < $b['time']) ? -1 : 1;
}
usort($array, 'cmp');
当然,如果数组没有time
元素,这将失败。应该怎么做取决于你的要求,所以我会把错误处理留给你;)
答案 2 :(得分:3)
使用PHP usort()函数:http://php.net/manual/en/function.usort.php
首先,定义一个决定数据结构比较结果的函数:
function cmp($a, $b)
{
if ($a['time'] == $b['time']) {
return 0;
}
return ($a['time'] < $b['time']) ? -1 : 1;
}
然后调用usort()并将函数的nmae赋予它:
usort($array, "cmp");
你已经完成了!
答案 3 :(得分:2)
uasort()
将maintain your keys 1 。
uasort($a, function($a, $b) {
$a = $a['time']; // Assuming keys exist
$b = $b['time'];
if ($a == $b) {
return 0;
} else {
return $a < $b ? -1 : 1; // Reverse < if sort order is wrong
}
});
匿名函数语法需要PHP 5.3 + !如果&lt; 5.3(参见其他答案),则传递比较函数的名称。
1)如果你关心钥匙的话。如果没有,只需使用上面丰富的usort()
方法:)比较函数基本相同(除了@ codaddict的elegant approach)。
答案 4 :(得分:1)
http://dk.php.net/usort
function sortByTime($a, $b)
{
if ($a['time'] > $b['time'])
{
return 1;
}
else if ($a['time'] < $b['time'])
{
return -1;
}
return 0;
}
usort($yourArray, 'sortByTime');