Нужна помощь по использованию справки Codeigniter gchart - PullRequest
0 голосов
/ 04 апреля 2011

Я следовал стилю вики (http://codeigniter.com/wiki/gchart/revision/5312/), чтобы попрактиковаться в Google Chart в моем CI 2.0. Но это не работает.

файл контроллера: ci \ application \ helpers \ mytest.php

$this->load->helper( 'gchart' );
$this->load->view('my_test');

просмотр файла: ci \ application \ helpers \ my_test.php

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6) &maxvalue;);
echo <<< EOS
     <img src="
        http://chart.apis.google.com/chart?
            cht=lc
            &chs=250x250
            &chd;:e{$encoded}
        "
        alt="line graph of some example data" />
EOS;

файл справки: ci \ application \ helpers \ gchart_helper.php

// I do copied all the source code from the wiki url link above.

Когда я пытаюсь нанести на карту CI. Это показало ошибку, как это, Ошибка разбора: синтаксическая ошибка, неожиданная ';' в C: \ xampp \ htdocs \ demo \ ci \ application \ views \ my_test.php в строке 54

Что-то не так в моей работе? Я сравнил extendedencode () из gchart_helper.php

function extendedencode($data, &$maxvalue='notspecified')

и extendedencode () из my_test.php

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6) &maxvalue;);

Затем я обновил строку extendedencode () на это в файле представления my_test.php,

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6), &maxvalue);

И попробуйте еще раз, но все равно получите эту ошибку ниже.

Ошибка разбора: синтаксическая ошибка, неожиданный ')', ожидание T_PAAMAYIM_NEKUDOTAYIM в C: \ xampp \ htdocs \ demo \ ci \ application \ views \ my_test.php в строке 54

Любая помощь или комментарии приветствуются.

[обновлено]

When I use the formated below, 

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6) &maxvalue);

showed another four error message.



Events List

A PHP Error was encountered

Severity: Notice

Message: Use of undefined constant maxvalue - assumed 'maxvalue'

Filename: views/my_test.php

Line Number: 54

A PHP Error was encountered

Severity: Warning

Message: max() [function.max]: When only one parameter is given, it must be an array

Filename: helpers/gchart_helper.php

Line Number: 49

A PHP Error was encountered

Severity: Warning

Message: Division by zero

Filename: helpers/gchart_helper.php

Line Number: 55

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: encoded

Filename: views/my_test.php

Line Number: 61

[Обновлено против предложения Фрэнка]

Ниже приведены еще две ошибки,

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 64

Filename: helpers/gchart_helper.php

Line Number: 65  // code line: $ret .= $grid[$x].$grid[$y];


A PHP Error was encountered

Severity: Notice

Message: Undefined variable: encoded

Filename: views/my_test.php

Line Number: 61 // code line: &chd;:e{$encoded}

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Ответ Алекса не является синтаксически правильным.Попробуйте:

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6), $maxvalue);

& в документации по функции просто говорит вам, что ваша переменная будет использоваться по ссылке.Вы не должны (и фактически не можете) включать & при вызове функции.В более старых версиях PHP была функция, называемая передачей времени вызова по ссылке, в которой вы использовали бы подобный синтаксис, но в последних версиях она запрещена.

Редактировать:

Относительноодна из перечисленных вами дополнительных ошибок: как говорит ошибка, в коде, который вы нам показали, нет $encoded var.Попробуйте заменить &chd;:e{$encoded} на &chd;:e{$encoded_data} - я предполагаю, что это может быть тем, что вы намеревались.

Небрежный способ заставить замолчать последнюю ошибку - заменить $ret .= $grid[$x].$grid[$y]; на $ret .= @$grid[$x].@$grid[$y];.Без дополнительного контекста для кода в игре трудно сказать, в чем же заключается настоящая проблема с корнем.

0 голосов
/ 04 апреля 2011

Я думаю, что это плохая точка с запятой в этой строке:

$encoded_data = extendedencode(array(0, 1, 2, 3, 4, 5, 6) &maxvalue;);

сразу после &maxvalue.

Попробуйте удалить его?

...