SVG Graph Неопределенный индекс: rgb(0,0,0)
Краткое объяснение:
Я только что установил версию 2.15.1 SVGGraph (последняя на момент написания). Теперь, когда я его настраиваю, у меня появляется следующая ошибка:
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;
}
}
}
}
Вот это. Красиво и просто. Кто-нибудь сталкивался с этой ошибкой и у них есть идеи, как ее исправить?
И для записи, если я выведу вывод $, график отображается нормально. Я не знаю, помогает ли это или нет.
1 ответ
Ниже письмо от автора SVGGraph:
Беглый взгляд на строку 1331 SVGGraphGridGraph говорит мне, примерно, в чем проблема:
@$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, чтобы сделать что-то долгое время.