使用php将列与数组分离

使用php将列与数组分离,php,pivot,Php,Pivot,我正在尝试使用chart.js和mssql数据库绘制条形图。我能够从数组中的数据库检索数据。我使用了以下代码 <?php $serverName = "PC"; $uid = "sa"; $pwd = "PC#1234"; $databaseName = "climate"; $dsn = "sql"; $conn= odbc_connect ($dsn ,$uid ,$pwd); if(!$conn){ echo('Connection

我正在尝试使用chart.js和mssql数据库绘制条形图。我能够从数组中的数据库检索数据。我使用了以下代码

<?php    
$serverName = "PC";   
$uid = "sa";     
$pwd = "PC#1234";    
$databaseName = "climate";   
$dsn = "sql"; 

$conn= odbc_connect ($dsn ,$uid ,$pwd);
if(!$conn){
    echo('Connection Failed');
}
$sql="select convert(nvarchar(100), DVCDTxp_Datetime,106)   )";
$rs=odbc_exec($conn,$sql);
if (!$rs){
    exit("Error in SQL");
}

echo odbc_result_all($rs);

$response = array();
for($i=1;$i<= odbc_num_rows($rs);$i++){
    $row = odbc_fetch_array($rs,$);
    $response[] = $row;
}
?>
我想要以下输出

DATE=["06 Jun 2015","08 Jun 2015","09 Jun 2015","11 Jun 2015","12 Jun 2015"]
VALUE=["5.466593","1.774121",".729223","3.329457","2.344660"]

您正在创建数组
$response
,因此假设数组键被索引,并且从零开始

如果没有,则在回声时使用
array\u values()
内部
json\u encode()

$all_dates = array_map(function($val){ return $val['DATE']; }, $response);

$all_values = array_map(function($val){ return (float)$val['AVG_VAL']; }, $response);
用作

DATE = <?php echo json_encode($all_dates)?>

VALUE = <?php echo json_encode($all_values)?>
日期=
值=

我不习惯odbc\u fetch\u数组,但我认为应该有$I而不是仅仅$

此外,若您可以获取记录,则可以使用array_push()将这些记录存储在数组中,作为

$date=array();
$value=array();
在您的for循环中

array_push($date,$row['date']);
array_push($value,$row['avg_value']);

如果您的
$response
是此形状,可能会有帮助:

$response = array(
    array("DATE" => "06 Jun 2015", "AVG_VAL" => 5.466593),
    array("DATE" => "08 Jun 2015", "AVG_VAL" => 1.774121),
    array("DATE" => "09 Jun 2015", "AVG_VAL" => 0.729223),
    array("DATE" => "11 Jun 2015", "AVG_VAL" => 3.329457),
    array("DATE" => "12 Jun 2015", "AVG_VAL" => 2.344660)
);

$date = array_column($response, 'DATE');
$value = array_column($response, 'AVG_VAL');

我还没有测试它,但是在第二个数组映射中,您遇到了一个问题。您正在将值转换为整数,这是错误的。您要么使用float,要么保持类型不变(如果您不想在输出中使用前导零)。是的,我的错误,它必须是
(float)
,我将编辑我的答案
$response = array(
    array("DATE" => "06 Jun 2015", "AVG_VAL" => 5.466593),
    array("DATE" => "08 Jun 2015", "AVG_VAL" => 1.774121),
    array("DATE" => "09 Jun 2015", "AVG_VAL" => 0.729223),
    array("DATE" => "11 Jun 2015", "AVG_VAL" => 3.329457),
    array("DATE" => "12 Jun 2015", "AVG_VAL" => 2.344660)
);

$date = array_column($response, 'DATE');
$value = array_column($response, 'AVG_VAL');