2015-06-27 2 views
0

Я пытаюсь построить гистограмму с помощью chart.js и из MSSQL database.I могут получить данные из базы данных в array.I использовал следующий код,Отдельный столбец из массива с помощью PHP

<?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   AVG_VAL 
06 Jun 2015  5.466593 
08 Jun 2015  1.774121 
09 Jun 2015  .729223 
11 Jun 2015  3.329457 
12 Jun 2015  2.344660 

Я хочу следующий вывод,

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"] 

ответ

0

Вы создаете массив $response, поэтому предполагается, что ключи массива будут индексироваться и начинаться с нуля.

Если нет, используйте array_values() внутри json_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)?> 
+0

I Хейвена»испытанных, но во второй карте массива у вас есть проблема. Вы преобразуете значение в целое число, что неверно. Вы либо должны использовать float, либо оставить тип нетронутым (если вы не хотите, чтобы начальный ноль выводился). – skroczek

+0

Да, моя ошибка, она должна быть '(float)', я просто отредактирую свой ответ – Viral

0

Я не привык к odbc_fetch_array, но я думаю, что надо $ я вместо того, чтобы только $

Кроме того, если вы можете получить запись, которую можно использовать array_push() в хранении тех, выстроены, как

$date=array(); 
$value=array(); 

в вашей цикл

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

Если $response в этой форме, возможно, array_column может помочь:

$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'); 
Смежные вопросы