Как заполнить ось Highcharts данными в формате строки из массива PHP - PullRequest
3 голосов
/ 22 октября 2011

Я пытаюсь преобразовать массив элементов php в метки для оси Highcharts .Пример по умолчанию:

categories: ['Jan','Feb','Mar','Apr', 'May', 'Jun', 
                    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

Итак, у меня есть массив PHP ($ items), и в итоге получается массив Javascript (var items).Firebug выводит следующее:

console.log(items);
["item1_10_20", "item2_2011_10_14", "item3_2011_10_07", "item3_2011_09_12"]

Я вижу, что вместо этого у меня должны быть одинарные кавычки.Как я могу это сделать?Или, может быть, вместо этого я должен кормить Highcharts запятой и отдельной строкой в ​​кавычках?Как мне это сделать?


РЕДАКТИРОВАТЬ

Я пробовал это, но совсем не повезло!

в моем файле просмотра У меня есть скрипт javascript:

var items = "'<? echo join("','", $items) ?>'"; // Note the enclosing single quotes

А в файле Highcharts JS:

xAxis: {
 categories: [items]
},

Весь массив помещается в первое значение оси X, а остальные значения являются пустыми.Переменная item показана в firebug:

'item1_2011_10_20','item2_2011_10_14','item3_2011_10_07','item4_2x1_2011_09_12'

Как странно, что это не работает?


EDIT

При использовании json_encode дляотформатировать массив PHP, я до сих пор не могу получить высокие диаграммы для распознавания массива.Если я вручную скопирую и закодирую массив одинарными кавычками, это сработает.Но мне действительно нужно передать массив из php в js старших диаграмм через переменные.

Вот результирующая ось x с массивом через json_encode: Chart with bad x-axis

Ответы [ 2 ]

5 голосов
/ 23 октября 2011

Следующий уже массив -

["item1_10_20", "item2_2011_10_14", "item3_2011_10_07", "item3_2011_09_12"]

Итак, измените следующее

xAxis: {
    categories: [items]
},

следующим образом -

xAxis: {
    categories: items
},

Обновление:

xAxis: {
    categories: eval('(' + items + ')')
},

Update2:

Единственное, что вам нужно знать, это то, что JSON - это не Javascript. Вы получаете ответ JSON с сервера, который является не чем иным, как строкой в ​​Javascript. Итак, чтобы использовать этот ответ JSON в Javascript, вы должны проанализировать JSON, чтобы сформировать структуру данных Javascript, такую ​​как объект, массив и т. Д. (Как мы это делаем с XMl), который называется синтаксическим анализом.

Существует много библиотек синтаксического анализа JSON, но мы также можем использовать функцию eval JS для выполнения работы, если безопасность не имеет значения.

А в вашем случае ответ JSON представляет массив, поэтому вы используете eval, чтобы превратить его в настоящий массив Javascript.

Итак, items - это JSON, и вы используете eval (eval('(' + items + ')')) для анализа, который возвращает массив Javascript, а затем присваиваете результат categories.

1 голос
/ 09 июня 2014

У меня была такая же проблема с массивом ac #, я решаю таким образом с бритвой:

@{
    string[] myIntArray = new string[5] {"Apples", "Oranges", "Pears", "Grapes", "Bananas" };
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    var jsVariable = serializer.Serialize(myIntArray);  
}


xAxis: {
    categories: @Html.Raw(jsVariable)
 },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...