2017-05-05 87 views
1

我正在将报告从PHP转换为jQuery。根据数组长度创建报告

下面是我的PHP代码:

Morris.Donut({ 
     element: 'graph_donut', 
     data: [ 
      <?php foreach ($result as $value) {?> 
      {label: <?php echo $value->x;?>, value: <?php echo $value->y;?>}, 
      <?php } ?> 
     ], 
     resize: true 
    }); 

变量$结果可能是任何值从1到4

我想将它转换为将此转换为jQuery和我有导致json格式。但是我无法实现我在PHP中轻松实现的功能。我没有任何问题,如果result.length是4,但如果它小于4我得到未定义的错误。以下是我在js中的代码。

Morris.Donut({ 
     element: 'graph_donut', 
     data: [ 
      {label: result[0].x, value: result[0].y}, 
      {label: result[1].x, value: result[1].y}, 
      {label: result[2].x, value: result[2].y}, 
      {label: result[3].x, value: result[3].y}, 
     ], 
     resize: true 
    }); 

在此先感谢。

回答

1

data = []; 
result.forEach(function(i) { data.push({label: i.x, value: i.y}) }); 
Morris.Donut({ 
     element: 'graph_donut', 
     data: data, 
     resize: true 
    }); 

demo

使数组
+0

非常感谢。这就像一个魅力。再一次感谢你。 – Krish

+0

很高兴提供帮助。祝你好运! – splash58

1

您需要根据结果长度构建数据,而不是直接插入。

所以像这样?

results = [{"cat_name":"something","x":94},{"cat_name":"something else","x":6}]; 
 

 
data = results.map(function(result) { 
 
    return { 
 
    label: result.cat_name, 
 
    value: result.x 
 
    } 
 
}); 
 

 
console.log(data)

然后使用它像这样,

Morris.Donut({ 
    element: 'graph_donut', 
    data: data, 
    resize: true 
}); 
+0

这是我的json结果 - [{“cat_name”:“something”,“x”:94},{“cat_name”:“something else”,“x”:6}] – Krish