Gewusst wie: Auffüllen von Highcharts-Achse mit string, formatiert Daten aus einem PHP-array
Ich versuche zu konvertieren, php array mit Elementen, die Etiketten für einen Highcharts X-Achse. Das Standard-Beispiel ist:
categories: ['Jan','Feb','Mar','Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
Also ich habe ein PHP-array ($items) und am Ende mit einem Javascript-array (var items). Firebug gibt Folgendes aus:
console.log(items);
["item1_10_20", "item2_2011_10_14", "item3_2011_10_07", "item3_2011_09_12"]
Kann ich sehen, dass ich einfache Anführungszeichen, statt. Wie kann ich das tun? Oder vielleicht sollte ich füttern Highcharts mit einem Komma und single-quoted string getrennt statt? Wie kann ich das tun, oder?
BEARBEITEN
Ich hab das versucht, aber kein Glück überhaupt!
in meiner view Datei habe ich ein javascript-Skript:
var items = "'<? echo join("','", $items) ?>'"; //Note the enclosing single quotes
Und in der Highcharts JS-Datei:
xAxis: {
categories: [items]
},
Das gesamte array gelegt wird in den ersten Wert auf der x-Achse und der rest der Werte leer sind. Das Element variable wird gezeigt in firebug:
'item1_2011_10_20','item2_2011_10_14','item3_2011_10_07','item4_2x1_2011_09_12'
Wie seltsam ist diese nicht funktioniert?
BEARBEITEN
Bei der Verwendung von Funktionen json_encode zu formatieren, php array, ich kann immer noch nicht highcharts zu erkennen, die das array. Wenn ich manuell kopieren und hartcodieren der array mit einfachen Anführungszeichen klappt es. Aber ich muss wirklich übergeben Sie das array von php nach highcharts' js über Variablen.
Hier ist die resultierende x-Achse mit einem array über die Funktionen json_encode:
- Gibt es einen Grund, warum Sie können nicht drucken, PHP array in der Mitte des JS-array? Ex. Kategorien: ['<? echo join("','", $items); ?>']
- Ich habe versucht, die erste, aber das deklarieren einer Variablen und der übergabe an javascript. In meinem Fall, die PHP in einer view-Datei und die JS läuft in einer anderen Datei. auf diese Weise, dachte, Highcharts ganze array als erstes Element in der x-Achse. Der rest der Achse, die Werte bleiben leer.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende bereits in einem array -
so, ändern Sie die folgenden
wie folgt -
Update:
Update2:
Eine Sache, die Sie wissen müssen ist, dass hier ist JSON nicht auf Javascript. Sie bekommen JSON-Antwort vom server, das ist nichts weiter als ein string in Javascript. So zu nutzen, dass die JSON-Antwort in Javascript-Sie haben zum Parsen der JSON form einer Javascript-Daten-Struktur-Objekt, array, etc (wie bei XMl), die aufgerufen wird, analysieren.
Gibt es eine Menge von JSON-parsing-libraries, aber wir können auch
eval
JS-Funktion, die Arbeit zu tun, solange die Sicherheit ist nicht ein Anliegen.- Und in Ihrem Fall, die JSON-Antwort repräsentiert ein array, so verwenden Sie
eval
zu drehen, die in ein echtes Javascript-array.So,
items
ist JSON und verwenden Sieeval
(eval('(' + items + ')')
) zu analysieren, das gibt einen Javascript-array und dann weisen Sie das Ergebniscategories
.Ich hatte das gleiche problem mit einem c# - array, die ich lösen auf diese Weise mit razor :