7

我正在我的应用程序中实现 Highcharts。它需要特定格式的数据。

我表中的数据如下

在此处输入图像描述

javascript需要以下格式的数据

在此处输入图像描述

当我var_dumpx_axis数组和y_axis数组时,我得到以下结果

在此处输入图像描述

我应该使用哪些 php 函数来格式化我的数组元素并以该格式传递给该 JavaScript?

data:[
     [<? echo PHP_some_function(" ' ", x_axis) ?>, <? echo (y_axis) ?>]   //quotes for x, no quotes for y value
]  //Moreover it should run for all the values in x_axis and y_axis

我需要一些逻辑在这里..

我的最终图表看起来像

在此处输入图像描述

4

4 回答 4

2

问题是您的查询。

它应该如下所示。

SELECT x_axis, y_axis FROM yourTableName;

这样,您将获得所需的格式Highcharts。您只需将其插入到数组中。

于 2012-12-20T19:07:39.477 回答
1

[<? echo "'". json_encode($x_axis). "', " . json_encode($y_axis) ?>]

演示:http ://codepad.org/G5JAtXWu

尼克斯说我很困惑。

你想要做的是:

foreach($x_axis as $key=>$x) {
    echo "['" . $x . "', " . $y_axis[$key] . "]";
}

演示:http ://codepad.org/SKNk1VaX

总结一下:

$d = array();
foreach($x_axis as $key=>$x) {
    $d[] = "['" . $x . "', " . $y_axis[$key] . "]";
}
echo json_encode($d);

演示:http ://codepad.org/KhofwXCi

于 2012-12-20T15:28:16.783 回答
1

假设:

$x_axis = array('Safari', 'Opera', 'Firefox', 'IE', 'Chrome', 'Others');
$y_axis = array(10, 6, 40.5, 20, 10.6, 0.5);

这应该有效:

$data = array();
$length = count($x_axis);
for ($i = 0; $i < $length; $i++) {
    $data[] = array($x_axis[i], $y_axis[i]);
}
于 2012-12-20T15:28:48.140 回答
0

可能是数组组合而不是 json 编码和替换?以防万一;)

<?php 

$x_axis = array(
'Safari', 'Opera', 'fireFox'
);

$y_axis = array(
10, 30.4, 50
);

$keyFilled = array_combine($x_axis, $y_axis);

arsort($keyFilled);

$jsonData = json_encode($keyFilled);

$jsonDataReplaced = str_replace(array(',', '{', '}', ':'), array('],[', '[', ']', ','), $jsonData);
echo '<pre>';
var_dump('['.$jsonDataReplaced.']');

?>

输出是:

string(45) "[["fireFox",50],["Opera",30.4],["Safari",10]]"

http://phpfiddle.org/main/code/jq4-cgb

于 2012-12-20T15:53:37.277 回答