如何通过保留键
来排序数组 $arr = array(strong text
'a' => array('date' => time() - 1000),
'b' => array('date' => time() - 2000),
'c' => array('date' => time() - 3000),
);
我想根据时间()进行排序。
答案 0 :(得分:0)
function cmp($a, $b)
{
if($a["date"] == $b["date"]) return 0;
return($a["date"] > $b["date"]) ? 1 : -1;
}
usort($array, "cmp");
答案 1 :(得分:0)
有几个PHP函数可以对数组进行排序 - 您可以在此处查看概述:http://php.net/manual/en/array.sorting.php
由于您既不想按键也不想使用值,而是根据您的某些自定义逻辑,您需要使用以 u 开头的其中一个函数。这三个函数中的两个函数,2可用于按值排序: usort 和 uasort 。它们之间的区别在于,虽然第一个没有保留键值关联,但第二个却保留了键值关联,这使得 uasort 成为您需要的功能。
uasort 需要2个参数 - 一个要排序的数组和一个回调,对于2个给定元素,如果第一个元素为<,则返回 -1,0或1 比第二个更强,更小,更大或更大。
在您的情况下,这将有效:
print_r($arr);
uasort($arr, function($e1, $e2) {
if ($e1['date'] == $e2['date']) {
return 0;
}
return ($e1['date'] < $e2['date']) ? -1 : 1;
});
print_r($arr);
注意:确保不将uasort的结果分配给$ arr - 此函数的返回值不是排序数组,而是布尔表示排序是否成功。