我有一个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服务器并获得相同的结果,我应该如何编写它? (只是一个可选的疑问)
答案 0 :(得分:1)
我在json_encode
中找不到自定义输出,因此如果要自定义数组的输出,则需要进行准备。
我假设数据存在零索引(0
)。
所以,我使用$stockdata[0]
对于JSON_NUMERIC_CHECK
替换,使用了(float)
这里是准备发送你想要的输出。
$stockdata = getArraySQL();
$Numeric_data = (float) $stockdata[0];
$data = '[{"data": ['.$Numeric_data.']}]';
echo $data;