2014-01-16 71 views
-1

我讨厌击败一匹死马,但在这里。我有一个运行的Apache2服务器,并创建我自己的php/html表单,并用mysql输出和输出。很好,我喜欢它。在插入数据库之前对数组进行排序

我的问题是我有一个巨大的数组,我想插入到MySQL,但它需要首先排序(0 < 00)。我已经通过了许多涵盖这里的主题,并且提供的代码在单个数组上工作得很好。然而,我需要循环大约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

有两个问题:(1)按什么标准排序? (2)为什么在它碰到MySQL之前需要对它进行排序?这意味着您的数据库设计存在问题。 –

+1

是源数据吗?你想要每个单独的子数组中的元素排序,还是子数组在$ data中排序?这是一个非常模糊的问题。 。 。 – ernie

+0

我需要对每个集合进行升序排序,以维护用于模式匹配的mysql查询模式。如果这是有道理的。 – user3138409

回答

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); 
+0

这可能是最简单的方法..我正在与array_multisort和array_walk :) – JREAM

+0

也可能,张贴如何使用它。 – Niels