2017-05-18 2 views
1

Ich versuche, Daten in Probe wie in highcarts zurückgegeben, ich habe viel versucht, aber meine Datenausgabe ist ziemlich anders als zeigt dann in Highcart, wenn ich versuche, meine Daten die Grafikdaten nicht zeigt upRückgabe von Daten im JSON-Format zeigt nicht richtig an

kann mir jemand aus

hier helfen

zeigt Beispieldaten aus Hoch Chart

?([ 
[Date.UTC(2013,5,2),0.7695], 
[Date.UTC(2013,5,3),0.7648], 
[Date.UTC(2013,5,4),0.7645], 
[Date.UTC(2013,5,5),0.7638], 
[Date.UTC(2013,5,6),0.7549], 
[Date.UTC(2013,5,7),0.7562], 
[Date.UTC(2013,5,9),0.7574], 

Dies wird Put meiner Rückkehr Daten follwoing aus

["[Date.UTC(2012,05,18), 14.38], 
"," 
[Date.UTC(2012,05,21), 14.15], 
"," 
[Date.UTC(2012,05,22), 15.11], 
"," 
[Date.UTC(2012,05,23), 14.96], 
"," 
[Date.UTC(2012,05,24), 14.98], 
"," 
[Date.UTC(2012,05,25), 15.05], 
"," 
[Date.UTC(2012,05,28), 14.8], 
"," 
[Date.UTC(2012,05,29), 14.71], 
"," 
[Date.UTC(2012,05,30), 14.72],", 

Hier ist mein Code

  $chartData = array(); 
     foreach ($data as $key => $value) { 

      $date = explode('-', $value['date']); 
      $new_date = $date[0]. "," .$date[1]. "," .$date[2]; 
      $value = $value['closing_rate']; 
      $datetime = 'Date.'. 'UTC('.$new_date.')'; 
      $chartData[] = "[$datetime, $value]"; 
     } 
     echo json_encode($chartData, JSON_NUMERIC_CHECK); 
+0

versuchen Sie dies $ chartData [] = array ($ datetime, $ value); –

Antwort

2

Die Probendaten, die Sie im ersten Block angezeigt werden Javascript-Code enthält; Date.UTC() ist ein Aufruf einer Methode UTC der Javascript Date Klasse. Ein JSON kann keinen Code enthalten, er enthält nur Daten.

In der zweiten Liste generieren Sie einige Zeichenfolgen, die Javascript-Code enthalten. Der JSON wird in Javascript richtig dekodiert, aber alles, was er enthält, ist eine Liste von Zeichenfolgen, die wie der Code in der ersten Auflistung aussehen. Sie benötigen den Code nicht, sondern dessen Ergebnisse.

Date.UTC() ist eine statische Methode der Javascript Date Klasse, die computes and returns:

Rückgabewert

Eine Zahl, die die Anzahl der Millisekunden im gegebenen Date-Objekt darstellt, da January 1, 1970, 00:00:00, Weltzeit.

Es gibt viele Möglichkeiten, denselben Wert in PHP zu generieren. Am einfachsten ist es, lassen Sie die DateTime Klasse, die schweres Heben tun:

// Use the UTC timezone 
$tz = new DateTimeZone('UTC'); 
// Prepare the data here 
$chartData = array(); 
foreach ($data as $key => $value) { 
    $date = new DateTime($value['date'], $tz); 
    // DateTime::format('U') returns the number of seconds since Jan 1, 1970 
    // multiply by 1000 to get the number of milliseconds 
    $chartData[] = array(1000 * $date->format('U'), $value['closing_rate']); 
} 


echo json_encode($chartData, JSON_NUMERIC_CHECK); 

Bemerkung

Wenn Sie den Code auf PHP 7 oder höher ausgeführt werden, dann können Sie DateTime::format('v') verwenden das bekommen Anzahl der Millisekunden:

foreach ($data as $key => $value) { 
    $date = new DateTime($value['date'], $tz); 
    $chartData[] = array($date->format('v'), $value['closing_rate']); 
} 
+0

Sie wissen, was Sie total rocks Daumen hoch für Sie, aber es gibt 2 Frage, wenn Sie mich nicht fragen 1) das Datum wird als 2013 2014 2015 2016 2017 nicht als März 1 2015 März 2 2015 ist es, weil ich Daten zeigen für alle 5 Jahre? 2) es gibt 4 Werte Name1: Wert Name 2 dann Wert: Wie kann ich das ändern? –

+0

Ich habe eine Korrektur am Code vorgenommen, der zweite Wert, der in jedes Array in '$ chartData' geschrieben wird, ist' $ value ['closing_rate'] '(vorher war es $ wert und war nicht korrekt). – axiac

+0

* "Das Datum wird angezeigt als 2013 2014 2015 2016 2017 nicht als März 1 2015 März 2 2015" * - Ich denke, Sie sprechen über das, was Sie im Browser sehen. Zunächst sollten Sie (in den Developers Tools des Browsers) überprüfen, ob Sie die richtigen Werte vom Backend erhalten. Wenn sie korrekt sind, dann können Sie die Charting-JS-Bibliothek so konfigurieren, dass sie für die angezeigten Daten das eine oder andere Format verwendet. Überprüfen Sie die Dokumentation. – axiac

Verwandte Themen