0

簡単な説明:

SVGGraphのバージョン 2.15.1 をインストールしました (執筆時点で最新のものです)。今、私がそれを設定していると、次のエラーポップアップが表示されます:

Error 8 @ line 1331 of APP_ROOT/inc/SVGGraph/SVGGraphGridGraph.php : Undefined index: rgb(0,0,0)`

参考までに、私のコードを以下に示します (ベース SVGGraph フォルダーにあります)。

<?php

require_once 'SVGGraph.php';
$graph = new SVGGraph(400, 300, array('namespace' => true));

$graph->Values(1, 4, 8, 9, 16, 25, 27); 
$output = $graph->fetch('LineGraph');

そして、これは の行1319 - 1350ですSVGGraphGridGraph

if($this->show_divisions) {
  // use an array to join paths with same colour
  $div_paths = array();
  if($this->show_axis_h) {
    $points = $this->GetGridPointsX(0);
    $dx_path = $this->XAxisDivisions($points,
      $this->GetFirst($this->division_style_h, $this->division_style), 
      $this->GetFirst($this->division_size_h, $this->division_size),
      $yoff);
    if(!empty($dx_path)) {
      $dx_colour = $this->GetFirst($this->division_colour_h,
        $this->division_colour, $this->axis_colour);
      @$div_paths[$dx_colour] .= $dx_path;           //          <== Line 1331 <==
    }
  }
  if($this->show_axis_v) {
    for($i = 0; $i < $y_count; ++$i) {
      if(!is_null($this->y_axes[$i])) {
        $points = $this->GetGridPointsY($i);
        $dy_path = $this->YAxisDivisions($points,
          $i > 0 ? $this->g_width : $xoff, false, $i);
        if(!empty($dy_path)) {
          $dy_colour = $this->GetFirst(
            $this->ArrayOption($this->division_colour_v, $i),
            $this->division_colour,
            $this->ArrayOption($this->axis_colour_v, $i),
            $this->axis_colour);
          @$div_paths[$dy_colour] .= $dy_path;
        }
      }
    }
  }

そうです。素敵でシンプル。誰かがこのエラーに出くわしたことがありますか?それを修正する方法を知っていますか?

記録として、$output をエコーアウトすると、グラフは正常に表示されます。それが役立つかどうかはわかりません。

4

1 に答える 1

0

以下は、SVGGraph の作成者からのメールです。

SVGGraphGridGraph の 1331 行目をざっと見てみると、大まかに問題が何であるかがわかります。

      @$div_paths[$dx_colour] .= $dx_path;

エラー メッセージは、行頭の「@」記号で表示されないようにする必要があるため、なぜ表示されるのかわかりません。通常のPHP以外のものを使用していますか?または、「@」演算子を無効にする拡張機能がインストールされていますか?

「@」演算子は、式をより複雑にする必要がないように、ここ (および他の場所) で使用されています。「@」がないと、次のようになります。

      $div_paths[$dx_colour] = isset($div_paths[$dx_colour]) ? $div_paths[$dx_colour] . $dx_path : $dx_path;

あまりにも多くの場所で使用したとは思わないので、SVGGraph を変更して長い道のりを行うのはそれほど面倒ではありません。

于 2014-07-21T08:18:27.300 に答える