将php数组分组并在数组中显示最高和最低值

时间:2019-06-19 16:25:33

标签: php mysql arrays

我有一个看起来像这样的数组:

Array
(
    [0] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 1
        )
    [1] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 2
        )
    [2] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 3
        )
    [3] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 4
        )
    [4] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 5
        )
    [5] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 6
        )
    [6] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 7
        )
    [7] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 8
        )
    [8] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 9
        )
    [9] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 10
        )
    [10] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 11
        )
    [11] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 12
        )
    [12] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 20
        )
    [13] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 21
        )
    [14] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 22
        )
    [15] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 23
        )
    [16] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 24
        )
    [17] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 25
        )
    [18] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 26
        )
   [19] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 27
        )
    [20] => Array
        (
            [0] => 19.0001.2
            [1] => 1
            [2] => 33
        )
    [21] => Array
        (
            [0] => 19.0001.2
            [1] => 2
            [2] => 30
        )
    [22] => Array
        (
            [0] => 19.0001.2
            [1] => 2
            [2] => 35
        )
    [23] => Array
       (
            [0] => 19.0001.2
            [1] => 2
            [2] => 46
        )
    [24] => Array
        (
            [0] => 19.0001.2
            [1] => 2
            [2] => 47
        )
    [25] => Array
        (
            [0] => 19.0001.2
            [1] => 2
            [2] => 48
        )
    [26] => Array
        (
            [0] => 19.0001.2
            [1] => 2
            [2] => 50
        )
    [27] => Array
        (
            [0] => 19.0001.2
            [1] => 3
            [2] => 1
        )
    [28] => Array
        (
            [0] => 19.0001.3
            [1] => 2
            [2] => 40
        )
    [29] => Array
        (
            [0] => 19.0001.3
            [1] => 2
            [2] => 41
        )
    [30] => Array
        (
            [0] => 19.0001.3
            [1] => 2
            [2] => 42
        )
    [31] => Array
        (
            [0] => 19.0001.3
            [1] => 3
            [2] => 7
        )
    [32] => Array
        (
            [0] => 19.0001.3
            [1] => 3
            [2] => 8
        )
    [33] => Array
        (
            [0] => 19.0001.3
            [1] => 3
            [2] => 9
        )
    [34] => Array
       (
            [0] => 19.0001.3
            [1] => 3
            [2] => 13
        )
    [35] => Array
        (
            [0] => 19.0001.3
            [1] => 4
            [2] => 41
        )
    [36] => Array
       (
            [0] => 19.0001.4
            [1] => 1
            [2] => 2
        )
    [37] => Array
        (
            [0] => 19.0001.4
            [1] => 1
            [2] => 3
        )
    [38] => Array
        (
            [0] => 19.0001.4
            [1] => 1
            [2] => 4
        )
    [39] => Array
        (
            [0] => 19.0001.8
            [1] => 4
            [2] => 40
        )
    [40] => Array
        (
            [0] => 19.0009.8
            [1] => 3
            [2] => 8
        )
)

我有一个函数可以将数组中的最后一个值分组为一个数字范围,但是不适用于上面的数组。我尝试了许多不同的阵列,但均未成功。上面的数组是由mysql查询结果生成的。

$getlocations = $db->query("
    SELECT barcode
         , test_num
         , magnum
         , sect
         , slidenum 
      FROM fas_log 
     WHERE barcode LIKE '%$bcinv' 
       AND notes = '$notes' 
       AND removed = '$removed' 
       AND staffid= '$sid' 
  ORDER BY magnum, sect, slidenum
  ");
    while ($getlocationsrow = $getlocations->fetch()) {
        extract($getlocationsrow);
        $magrange[]=array("$magnum", "$sect", "$slidenum");
    }

function rangeslides($arr) {
    $previous = null; 
    $result = array();
    $consecutiveArray = array();
    // Slice array by consecutive sequences
    foreach($arr as $number) {
        if ($number == $previous + 1) {
            $consecutiveArray[] = $number;
        } else {
            $result[] = $consecutiveArray;
            $consecutiveArray = array($number);
        }
        $previous = $number;
    }
    $result[] = $consecutiveArray;
    // Get length of each sub array
    $count = array_map('count', $result);
    $first = reset($count);
    $last = end($count);
    prettyarray($result);
}

我想从数组中提取数据,使其看起来像这样,显示范围内的第一个和最后一个数字: 19.0001.2 1-12

上面的数组应该产生15个不同的结果,其中9个没有显示数字范围,因为它们是奇数。 即:19.0001.8 4 40

0 个答案:

没有答案