在纯PHP示例中创建图表

时间:2016-03-20 17:34:32

标签: php

我真的一直在努力解决这个问题,所以我认为这可以保证它能够开启一个新问题,以便从更有经验的人那里获得一些帮助。

我正在使用以下示例在纯PHP http://code.web-max.ca/image_graph.php

中创建一个非常简单的图表

问题

我正在添加我的代码我已经在代码中评论了我遇到的问题 主要是在大写字母中。

$maxv变量设置为0导致错误除以零时,问题出现在下面...但是当我将示例复制并粘贴到我的编辑器并运行时,它正在工作,所以我的代码中某处存在逻辑问题,我附上截图以及我的代码.....任何帮助非常感谢

我的输出IMG enter image description here

    //create array retrieved from DB in code ABOVE and add "" and , to each value
        foreach($t1Picks as $key => $nr){
            $values[] = '"'.$nr.'"'.','; 

        }

         echo '$values are fine'. implode($values);
        echo '<br />';
    //values are fine.....go ahead

    // Get the total number of columns we are going to plot
        $columns  = count($values);
         echo 'COLUMN COUNT IS FINE'.$columns;
        echo '<br />';
    //columns count is fine continue
    // Get the height and width of the final image

        $width = 300;
        $height = 200;

    // Set the amount of space between each column

        $padding = 5;

    // Get the width of 1 column

       $column_width = $width / $columns;
       $column_width = round($column_width, 0);

       echo 'COLUMN WIDTH IS FINE'.$column_width;
       echo '<br />';
        // Generate the image variables

        $im        = imagecreate($width,$height);
        $gray      = imagecolorallocate ($im,0xcc,0xcc,0xcc);
        $gray_lite = imagecolorallocate ($im,0xee,0xee,0xee);
        $gray_dark = imagecolorallocate ($im,0x7f,0x7f,0x7f);
        $white     = imagecolorallocate ($im,0xff,0xff,0xff);

        // Fill in the background of the image

         imagefilledrectangle($im,0,0,$width,$height,$white);

       $maxv = 0; //I DONT UNDERSTAND THIS 
       //WHY MAX VAL 0? 

    // Calculate the maximum value we are going to plot

        for($i=0;$i<$columns;$i++)$maxv = max($values[$i],$maxv); //WHY NO BRACE { ON FOR 
        echo 'MAXV TEST IS'.$maxv; //THE FIRST LOOP IS 9 AND THEN ZEROS
        echo'<br />';
  // Now plot each column

非常感谢您的阅读!

1 个答案:

答案 0 :(得分:1)

我注意到了几件事。看起来您正在为$values数组中的每个元素添加逗号。

$values[] = '"'.$nr.'"'.','; 

我会改为改为。

$values[] = $nr; 

然后将您的内爆线更改为此...

echo '$values are fine'. implode(", ", $values);

接下来,我在你的示例代码中看不到你正在进行除法的任何地方,除了这里......

$column_width = $width / $columns;

因此,如果您的$values数组中没有值,那么唯一一次得到除零错误的分数。