更改数组结果PHP和MYSQL

时间:2015-06-18 07:05:57

标签: php mysql arrays

我需要帮助来使用php从mysql数据更改数组结果来创建一些报告。

这是我从查询结果mysql和php

获得的数组结果
Array
(
    [0] => Array
        (
            [AIRL] => GA 
            [TICK] => 39
            [JUM] => 103000000.00
        )

    [1] => Array
        (
            [AIRL] => JT 
            [TICK] => 31
            [JUM] => 42485000.00
        )

    [2] => Array
        (
            [AIRL] => SJY
            [TICK] => 3
            [JUM] => 3020000.00
        )

    [3] => Array
        (
            [AIRL] => KD 
            [TICK] => 3
            [JUM] => 3011000.00
        )

    [4] => Array
        (
            [AIRL] => QG 
            [TICK] => 1
            [JUM] => 2696000.00
        )

)

上面的数组结果需要更改为这个数组:

Array
(
    [0] => Array
        (
            [0] => AIRL
            [1] => TICK
            [2] => JUM
        )

    [1] => Array
        (
            [0] => GA
            [1] => 39
            [2] => 103000000
        )

    [2] => Array
        (
            [0] => JT
            [1] => 31
            [2] => 42485000
        )

    [3] => Array
        (
            [0] => SJY
            [1] => 3
            [2] => 3020000
        )

    [4] => Array
        (
            [0] => KD
            [1] => 3
            [2] => 3011000
        )

    [5] => Array
        (
            [0] => QG
            [1] => 1
            [2] => 2696000
        )

)

到目前为止我的代码是这样的:

<?php
/** Connection Database */
$myServer ="xxx";
$conn_inv = mysql_connect($myServer, 'xxx', 'xxx');
mysql_select_db('xxx');

/** Query Database */
$query = "SELECT     TOP 20 d.AIRL AS AIRL, COUNT(d.TICK) AS TICK, SUM(d.VALUE) AS JUM
FROM         TICKET d INNER JOIN
                      Invoice h ON h.INVNO = d.INVNO AND h.TYPE = d.TYPE
WHERE     (h.INVDATE >= '05/01/2015') AND (h.INVDATE <= '05/15/2015') AND (h.TYPE = 'TIX')
GROUP BY d.KD_AIRL
ORDER BY JUM DESC";  
$result = mysql_query($query);
$tes = array();
while($row=mysql_fetch_assoc($result)){
    array_push($tes, $row);
}

$data = array(
                array('AIRL','TICK','JUM'),
                array('GA',   39,       103000000),
                array('JT',   31,       42485000),
                array('SJY',  3,        3020000),
                array('KD',   3,        3011000),
                array('QG',   1,        2696000),
            );

// THIS IS ARRAY RESULT FROM QUERY DATABASE         
echo "<pre>";
print_r($tes);
echo "</pre>";
echo "<br/>";

// THIS IS ARRAY RESULT I WANTED
echo "<pre>";
print_r($data);
echo "</pre>";
?>

3 个答案:

答案 0 :(得分:5)

改变如下:

$tes = array();
while($row=mysql_fetch_array($result)){
    array_push($tes, $row);
}

答案 1 :(得分:3)

使用此:

$array = array(array('AIRL'=>'GA','TICK'=>39,'JUM'=>103000000.00),array('AIRL'=>'JT','TICK'=>31,'JUM'=>42485000.00));
$new = array();
foreach($array as $k=>$a){
    if($k == 0){
        $new[] = array_keys($a);
        $new[] = array_values($a);
    }else{
        $new[] = array_values($a);
    }
}
var_dump($new);

输出:

array (size=3)
  0 => 
    array (size=3)
      0 => string 'AIRL' (length=4)
      1 => string 'TICK' (length=4)
      2 => string 'JUM' (length=3)
  1 => 
    array (size=3)
      0 => string 'GA' (length=2)
      1 => int 39
      2 => float 103000000
  2 => 
    array (size=3)
      0 => string 'JT' (length=2)
      1 => int 31
      2 => float 42485000

http://sandbox.onlinephpfunctions.com/code/1646df30b52dc72d522bc86c395b691e1cc634ce

答案 2 :(得分:0)

foreach也是一种可能性

foreach ( $tes as $k => $test) {
 $i = 0;
 foreach ( $test as $key => $t ) {
  $tes[$k][$i] = $test[$key];
  unset($tes[$k][$key]);   
  $i++;
 }
}