关于php调用open-flash-chart-2php 调用开源的 open-flash-chart.swf
遇到一个问题生成线型图的时候会用到 OFC_Charts_Line 这个类
这个类里面有一个 set_values 方法比如像下面的代码
图表能正常显示
$chart = new OFC_Chart();
$data = array(17,15,21,32);
$charts_Line = new OFC_Charts_Line();
$charts_Line->set_values($data);
$chart->add_element($charts_Line);如果用下面的代码
$result = $db->getData();     --数据库检索的结果(假如有1条记录的话)
$chart = new OFC_Chart();
$data = array(17,$result[0]["num"],21,32);
$charts_Line = new OFC_Charts_Line();
$charts_Line->set_values($data);
$chart->add_element($charts_Line);
这样写的话图表不能够正常显示请高手指点下是什么原因啊
唯一的区别就是一个是写死的数组 $data = array(17,15,21,32);
另一个是动态取值的数组  $data = array(17,$result[0]["num"],21,32);

解决方案 »

  1.   


    有可能是数据类型的原因,建议将$data = array(17,$result[0]["num"],21,32);修改为 $data = array(17,intval($result[0]["num"]),21,32);这样就能保证数组元素全部都是数字类型,楼主试一下
      

  2.   

    $data = array(17,$result[0]["num"],21,32);
    在这个下面加两句
    echo $result[0]['num']."<br>\n";
    var_dump($data);
    看看数据是否正常,看看数据类型是什么。
      

  3.   

    感谢楼上二位的回复我把
    $data = array(17,$result[0]["num"],21,32);
    这个数组打印出来数据类型确实是正确的
    比如 $result[0]["num"] 是 25 的时候
    打印出来的 $data 是 [17,25,21,32]
    是数字类型的就是放到
    $charts_Line->set_values($data);
    貌似不能识别
    简直怪异啊另外我没用 intval
    我用的是 + 0 处理
    这个应该是一个效果的
      

  4.   

    试了一下貌似果然不好用啊要不你这样看下把那些数据生成个json文件
    然后把json文件作为参数读入看怎么样
    缺点就是会生成会多文件的样子
    不过功能是可以实现了
      

  5.   

    $number=array();
    while ($row=mysql_fetch_array($result)){
         $number[]=$row["number"];
       }for($i=0;$i<$rowCount;$i++)
    {     
    $dis_value[]=intval($number[$i]); 
    }这里的$rowCount代表数据的行数;$number代表你需要取的那一列的数组$line_dot->set_values($dis_value);应该很明了了吧