按键对数组中的数据进行排序

时间:2014-04-12 15:47:51

标签: php arrays sorting

美好的一天。

我们有阵列:

array(3) {
  [1]=>
  array(9) {
    [1]=>
    string(12) "aaandroid.ru"
    [2]=>
    string(1) "0"
    [3]=>
    string(1) "0"
    [4]=>
    string(1) "0"
    [5]=>
    string(1) "0"
    [6]=>
    string(1) "0"
    [7]=>
    string(5) "Test2"
    [8]=>
    string(10) "2012-03-27"
    [9]=>
    string(10) "2013-04-29"
  }
  [2]=>
  array(9) {
    [1]=>
    string(7) "aaga.ru"
    [2]=>
    string(1) "0"
    [3]=>
    string(1) "0"
    [4]=>
    string(1) "0"
    [5]=>
    string(1) "0"
    [6]=>
    string(1) "0"
    [7]=>
    string(8) "Test1"
    [8]=>
    string(10) "2008-02-21"
    [9]=>
    string(10) "2013-04-29"
  }
  [3]=>
  array(9) {
    [1]=>
    string(10) "aatrakc.ru"
    [2]=>
    string(1) "0"
    [3]=>
    string(1) "0"
    [4]=>
    string(1) "0"
    [5]=>
    string(1) "0"
    [6]=>
    string(1) "0"
    [7]=>
    string(8) "Test3"
    [8]=>
    string(10) "2012-03-27"
    [9]=>
    string(10) "2013-04-29"
  }

请告诉我如何使用密钥对数组中的数据进行排序?

例如,我想获得数组在元素7上进行数据排序的数组,即。结果我想得到数组:

array(3) {
      [1]=>
      array(9) {
    [1]=>
    string(7) "aaga.ru"
    [2]=>
    string(1) "0"
    [3]=>
    string(1) "0"
    [4]=>
    string(1) "0"
    [5]=>
    string(1) "0"
    [6]=>
    string(1) "0"
    [7]=>
    string(8) "Test1"
    [8]=>
    string(10) "2008-02-21"
    [9]=>
    string(10) "2013-04-29"
      }
    [1]=>
    string(12) "aaandroid.ru"
    [2]=>
    string(1) "0"
    [3]=>
    string(1) "0"
    [4]=>
    string(1) "0"
    [5]=>
    string(1) "0"
    [6]=>
    string(1) "0"
    [7]=>
    string(5) "Test2"
    [8]=>
    string(10) "2012-03-27"
    [9]=>
    string(10) "2013-04-29"
      }
      [3]=>
      array(9) {
        [1]=>
        string(10) "aatrakc.ru"
        [2]=>
        string(1) "0"
        [3]=>
        string(1) "0"
        [4]=>
        string(1) "0"
        [5]=>
        string(1) "0"
        [6]=>
        string(1) "0"
        [7]=>
        string(8) "Test3"
        [8]=>
        string(10) "2012-03-27"
        [9]=>
        string(10) "2013-04-29"
      }

请告诉我它真的是如何制作的?

2 个答案:

答案 0 :(得分:2)

检查PHP usort函数:http://www.php.net/manual/en/function.usort.php。 它根据您可以创建的回调提供(就地)排序。

示例:

usort($myArray, function ($a, $b) {
    return strcmp($a[7], $b[7]);
});

答案 1 :(得分:0)

继续Hidde的回答,如果你想要颠倒你仍然使用usort()的排序顺序,但是你要调整strcmp()调用中参数的顺序。这将反转两个数组usort()中的哪一个看作较大的值。

usort($myArray, function ($a, $b) {
   return strcmp($b[7], $a[7]);
});

这使用匿名函数,因此它只适用于Php 5.3或更高版本。如果你必须在5.2上定义一个函数来用作回调。

function mySortFunction($a, $b) {
    return strcmp($b[7], $a[7]);
}

usort($myArray, 'mySortFunction');

请参阅: