在插入数据库之前对数组进行排序

时间:2014-01-16 18:25:19

标签: php arrays sorting

我讨厌击败一匹死马,但是这里去了。我有一个Apache2服务器正在运行,我创建自己的php / html表单,并使用mysql输出。效果很好,我喜欢它。

我的问题是我有一个巨大的数组,我想插入MySQL但它需要先排序(0 <00)。我已经完成了许多Q&amp;覆盖这里的主题和提供的代码在单个阵列上工作就好了。但是,我需要循环大约7000套,我希望输出为原始格式,但我没有运气使其按预期工作。

$data = array(
    array(29,11,15,30,33),
    array(30,11,25,18,02),
    array(12,15,08,06,18),
    array(17,20,03,21,02),
    array(26,27,12,30,11),
    array(05,25,34,11,16),
    array(29,11,06,30,14),
    array(05,26,12,18,33),
    array(23,28,05,22,09),
    array(05,36,31,32,27),
    array(02,06,03,05,14)
);

1 个答案:

答案 0 :(得分:2)

对每个子数组进行排序的简便方法:

$data = array(
    array(29,11,15,30,33),
    array(30,11,25,18,02),
    array(12,15,08,06,18),
    array(17,20,03,21,02),
    array(26,27,12,30,11),
    array(05,25,34,11,16),
    array(29,11,06,30,14),
    array(05,26,12,18,33),
    array(23,28,05,22,09),
    array(05,36,31,32,27),
    array(02,06,03,05,14)
);

foreach($data as &$value){ // Mind the & byref value
    sort($value);
}

var_dump($data);
// $data is now sorted over here

输出:

array(11) {
  [0]=>
  array(5) {
    [0]=>
    int(11)
    [1]=>
    int(15)
    [2]=>
    int(29)
    [3]=>
    int(30)
    [4]=>
    int(33)
  }
  [1]=>
  array(5) {
    [0]=>
    int(2)
    [1]=>
    int(11)
    [2]=>
    int(18)
    [3]=>
    int(25)
    [4]=>
    int(30)
  }
  [2]=>
  array(5) {
    [0]=>
    int(0)
    [1]=>
    int(6)
    [2]=>
    int(12)
    [3]=>
    int(15)
    [4]=>
    int(18)
  }
  [3]=>
  array(5) {
    [0]=>
    int(2)
    [1]=>
    int(3)
    [2]=>
    int(17)
    [3]=>
    int(20)
    [4]=>
    int(21)
  }
  [4]=>
  array(5) {
    [0]=>
    int(11)
    [1]=>
    int(12)
    [2]=>
    int(26)
    [3]=>
    int(27)
    [4]=>
    int(30)
  }
  [5]=>
  array(5) {
    [0]=>
    int(5)
    [1]=>
    int(11)
    [2]=>
    int(16)
    [3]=>
    int(25)
    [4]=>
    int(34)
  }
  [6]=>
  array(5) {
    [0]=>
    int(6)
    [1]=>
    int(11)
    [2]=>
    int(14)
    [3]=>
    int(29)
    [4]=>
    int(30)
  }
  [7]=>
  array(5) {
    [0]=>
    int(5)
    [1]=>
    int(12)
    [2]=>
    int(18)
    [3]=>
    int(26)
    [4]=>
    int(33)
  }
  [8]=>
  array(5) {
    [0]=>
    int(0)
    [1]=>
    int(5)
    [2]=>
    int(22)
    [3]=>
    int(23)
    [4]=>
    int(28)
  }
  [9]=>
  array(5) {
    [0]=>
    int(5)
    [1]=>
    int(27)
    [2]=>
    int(31)
    [3]=>
    int(32)
    [4]=>
    int(36)
  }
  [10]=>
  &array(5) {
    [0]=>
    int(2)
    [1]=>
    int(3)
    [2]=>
    int(5)
    [3]=>
    int(6)
    [4]=>
    int(14)
  }
}

修改

或者像@JREAM建议的那样,您可以使用array_walk

array_walk($data, sort);