Что такое синтаксическая ошибка в предоставленном коде: - PullRequest
0 голосов
/ 16 июля 2011
$pollPart .= '
<tr>
<td valign="top" nowrap="nowrap">'.$question['question'].'</td>
<td valign="top" height="10" width="100%" style="padding: 0px 10px;">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top" width="'.$percentage.'%" '.if($percentage > 0){$pollPart .= 'style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"';}.'><img src="/includes/poll/images/dot.gif" width="1" height="19" /></td>
<td valign="top" width="'.$percentage2.'%"></td>
</tr>
</table>
</td>
<td valign="top">'.$responses['total'].'</td>
</tr>
';

Я получаю синтаксис в следующей строке:

<td valign="top" width="'.$percentage.'%" '.if($percentage > 0){$pollPart .= 'style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"';}.'><img src="/includes/poll/images/dot.gif" width="1" height="19" /></td>

В частности, эта часть:

if($percentage > 0){$pollPart .= 'style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"';}

Любая информация по этому вопросу будет принята с благодарностью, спасибо!

Ответы [ 3 ]

4 голосов
/ 16 июля 2011

Вы не можете использовать условие if внутри строки, которая присваивается переменной. Вы можете попробовать:

(($percentage > 0)?'style="background: url(\'/includes/poll/images/bar.jpg\')':'')
1 голос
/ 16 июля 2011
$pollPart .= '
<tr>
<td valign="top" nowrap="nowrap">'.$question['question'].'</td>
<td valign="top" height="10" width="100%" style="padding: 0px 10px;">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top" width="'.$percentage.'%"';

if($percentage > 0){
    $pollPart .= ' style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"';
}

$pollPart .='><img src="/includes/poll/images/dot.gif" width="1" height="19" /></td>
<td valign="top" width="'.$percentage2.'%"></td>
</tr>
</table>
</td>
<td valign="top">'.$responses['total'].'</td>
</tr>'; 
1 голос
/ 16 июля 2011

Вы не можете делать if-блоки внутри конкатенации строк. Если вы хотите использовать встроенную троичную структуру if / else, синтаксис немного отличается.

Вместо

... if($percentage > 0){$pollPart .= 'style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"';} ...

Вы бы структурировали это как CONDITION ? TRUE-PART : FALSE-PART:

... (($percentage > 0) ? 'style="background: url(\'/includes/poll/images/bar.jpg\') repeat-x;"' : '') ...

Я использую пустую строку (''), поскольку не требуется ложное условие, но что-то необходимо вернуть, чтобы завершить оператор и объединить с остальной частью строки.

В качестве альтернативы, вы можете завершить цепочку конкатенаций, поместить блок if после него, а затем начать снова с $pollPart .=.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...