将php查询结果的输出更改为数组

时间:2015-08-09 04:56:08

标签: php json

我有一个PHP代码,其输出如下:

[{"stockdata":29655.88482666}]

我需要更改我的php上的代码以获得此格式的结果:

[{"data": [29655.88482666]}]

这是我的php的代码:

<?php


function getArraySQL(){
$startd = "29964";
$endd = "29968";
$dsn = "prueba";
$connect = odbc_connect( $dsn, '', '' );
$query = "

Select SUM(TON_DESCARGADO) as stockdata
    from 
        (Select unit,[load],enum_LOAD.[name],SUM(dumptons) as TON_DESCARGADO
        from hist_dumps inner join hist_loclist on hist_dumps.shiftindex = hist_loclist.shiftindex
                                       and hist_dumps.loc = hist_loclist.locid
                inner join enum_LOAD on hist_dumps.[load] = enum_LOAD.[num]
        where hist_dumps.shiftindex between '$startd' and  '$endd'

GROUP BY loc,UNIT,unit#,[load],enum_LOAD.[name])TEMP1
where unit = 'Stockpile'
GROUP BY unit
order BY UNIT";


if(!$rs = odbc_exec($connect, $query)) die();

$rawdata = array();

$i=0;

while($row = odbc_fetch_array($rs))
{   
$rawdata[$i] = $row;
$i++;
}
odbc_close( $connect );
return $rawdata;    
};
$stockdata = getArraySQL();
echo json_encode(($stockdata), JSON_NUMERIC_CHECK);

需要更改哪些内容才能获得正确的格式?我应该做些什么来改进我的PHP代码吗?

如果我通过PDO将php连接到SQL服务器并获得相同的结果,我应该如何编写它? (只是一个可选的疑问)

1 个答案:

答案 0 :(得分:1)

我在json_encode中找不到自定义输出,因此如果要自定义数组的输出,则需要进行准备。 我假设数据存在零索引(0)。
所以,我使用$stockdata[0]
对于JSON_NUMERIC_CHECK替换,使用了(float)

这里是准备发送你想要的输出。

$stockdata = getArraySQL();
$Numeric_data = (float) $stockdata[0];
$data = '[{"data": ['.$Numeric_data.']}]';
echo $data;

Demo