如何对数组进行排序

时间:2015-08-09 07:58:57

标签: php mysql

如何通过保留键

来排序数组
 $arr = array(strong text
    'a' => array('date' => time() - 1000),
    'b' => array('date' => time() - 2000),
    'c' => array('date' => time() - 3000),
);

我想根据时间()进行排序。

2 个答案:

答案 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 - 此函数的返回值不是排序数组,而是布尔表示排序是否成功。