我遇到了这个问题......它说的是“意想不到的T_VARIABLE”。有问题的一行是:
$children[ $i['parent_id'] ][] = array($i['forum_id'], "<option value=\"{$i['forum_id']}\"$selected> ", "{$i['forum_name']}</option>\n");
我尝试删除$
(在$children
中),但仍然会导致错误。它说“解析错误:语法错误,意外'['在......”
奇怪的是,这在PHP 5.2中没有问题。但是在PHP 5.3中,出现了问题。
由于我不是一个真正的程序员(只知道一点基本,我主要是设计),我真的对这里发生的事情毫无头绪。任何人都可以提供帮助吗?
这是完整的功能:
function build_forum_jump($html=1, $override=0, $remove_redirects=0)
{
global $INFO, $DB, $ibforums;
$last_cat_id = -1;
if ( $remove_redirects )
{
$qe = 'AND f.redirect_on <> 1';
}
else
{
$qe = '';
}
$DB->query("SELECT f.id as forum_id, f.parent_id, f.subwrap, f.sub_can_post, f.name as forum_name, f.position, f.redirect_on, f.read_perms, c.id as cat_id, c.name
FROM ibf_forums f
LEFT JOIN ibf_categories c ON (c.id=f.category)
WHERE c.state IN (1,2) $qe
ORDER BY c.position, f.position");
if ($html == 1) {
$the_html = "<form onsubmit=\"if(document.jumpmenu.f.value == -1){return false;}\" action='{$ibforums->base_url}act=SF' method='get' name='jumpmenu'>
<input type='hidden' name='act' value='SF' />\n<input type='hidden' name='s' value='{$ibforums->session_id}' />
<select name='f' onchange=\"if(this.options[this.selectedIndex].value != -1){ document.jumpmenu.submit() }\" class='forminput'>
<optgroup label=\"{$ibforums->lang['sj_title']}\">
<option value='sj_home'>{$ibforums->lang['sj_home']}</option>
<option value='sj_search'>{$ibforums->lang['sj_search']}</option>
<option value='sj_help'>{$ibforums->lang['sj_help']}</option>
</optgroup>
<optgroup label=\"{$ibforums->lang['forum_jump']}\">";
}
$forum_keys = array();
$cat_keys = array();
$children = array();
$subs = array();
$subwrap = array();
// disable short mode if we're compiling a mod form
if ($html == 0 or $override == 1)
{
$ibforums->vars['short_forum_jump'] = 0;
}
while ( $i = $DB->fetch_row() )
{
$selected = '';
$redirect = "";
if ($html == 1 or $override == 1)
{
if ($ibforums->input['f'] and $ibforums->input['f'] == $i['forum_id'])
{
$selected = ' selected="selected"';
}
}
if ( $i['redirect_on'] )
{
$redirect = $ibforums->lang['fj_redirect'];
}
if ($i['subwrap'] == 1)
{
$subwrap[ $i['forum_id'] ] = 1;
}
if ($i['subwrap'] == 1 and $i['sub_can_post'] != 1)
{
/***************************
*** INFINITE SUBFORUMS
****************************/
if ($i['parent_id'] > 0) {
$children[ $i['parent_id'] ][] = array($i['forum_id'], "<option value=\"{$i['forum_id']}\"".$sub_css."$selected> ", "{$i['forum_name']}$is_sub</option>\n");
}
else {
$forum_keys[ $i['cat_id'] ][$i['forum_id']] = "<option value=\"{$i['forum_id']}\"".$sub_css."$selected> -{$i['forum_name']}$is_sub</option>\n";
}
/**********INFINITE - END**************/
}
else
{
if ( $this->check_perms($i['read_perms']) == TRUE )
{
if ($i['parent_id'] > 0)
{
/***************************
*** INFINITE SUBFORUMS
****************************/
$children[ $i['parent_id'] ][] = array($i['forum_id'], "<option value=\"{$i['forum_id']}\"$selected> ", "{$i['forum_name']}</option>\n");
/**********INFINITE - END**************/
}
else
{
$forum_keys[ $i['cat_id'] ][$i['forum_id']] = "<option value=\"{$i['forum_id']}\"".$selected."> - {$i['forum_name']} $redirect</option><!--fx:{$i['forum_id']}-->\n";
}
}
else
{
continue;
}
}
if ($last_cat_id != $i['cat_id'])
{
// Make sure cats with hidden forums are not shown in forum jump
$cat_keys[ $i['cat_id'] ] = "<option value='-1'>{$i['name']}</option>\n";
$last_cat_id = $i['cat_id'];
}
}
foreach($cat_keys as $cat_id => $cat_text)
{
if ( is_array( $forum_keys[$cat_id] ) && count( $forum_keys[$cat_id] ) > 0 )
{
$the_html .= $cat_text;
foreach($forum_keys[$cat_id] as $idx => $forum_text)
{
if ( $subwrap[$idx] != 1 )
{
$the_html .= $forum_text;
}
else if (count($children[$idx]) > 0)
{
$the_html .= $forum_text;
if ($ibforums->vars['short_forum_jump'] != 1)
{
/****** INFINITE SUBFORUMS FIX BEGINS ************/
$the_html .= $this->subforums_addtoform($idx, \$children);
/********** INFINITE FIX - END ************/
}
else
{
$the_html = str_replace( "</option><!--fx:$idx-->", " (+".count($children[$idx])." {$ibforums->lang['fj_subforums']})</option>", $the_html );
}
}
else
{
$the_html .= $forum_text;
}
}
}
}
if ($html == 1)
{
$the_html .= "</optgroup>\n</select> <input type='submit' value='{$ibforums->lang['jmp_go']}' class='forminput' /></form>";
}
return $the_html;
}
答案 0 :(得分:1)
试试这个。我重写了整行,使其更清晰(更具保证性)。
$children[$i['parent_id']][] = array($i['forum_id'], '<option value="'.$i['forum_id'].'"'.$selected.'> ', $i['forum_name'].'</option>\n');
同样将第1270行从您的pastebin更改为:
$the_html = str_replace('</option><!--fx:'.$idx.'-->', '(+'.count($children[$idx]).' '.$ibforums->lang['fj_subforums'].')</option>', $the_html);
答案 1 :(得分:1)
你在找错了地方。
/****** INFINITE SUBFORUMS FIX BEGINS ************/
$the_html .= $this->subforums_addtoform($idx, \$children);
/********** INFINITE FIX - END ************/
应为$children
,不 \$children
。
至于为什么这在PHP 5.2中工作而不在PHP 5.3中,为namespaces引入了'\'字符(例如MyNamespace\SubSpace\Something
)。
给出以下代码:
function foo() {
$children = 'Hello world';
echo \$children;
}
foo();
在PHP 5.2中,结果如下:
警告:输入中出现意外字符:'\'(ASCII = 92)状态=%s在%d行
Hello world
在PHP 5.3中:
解析错误:语法错误,意外T_VARIABLE,期待%s上%s的T_STRING
在PHP 5.4中:
解析错误:语法错误,意外的'$ children'(T_VARIABLE),在%d行上的%s期待标识符(T_STRING)
答案 2 :(得分:1)
http://wordpress.org/support/topic/plugin-post-google-map-coud-not-to-activate-the-plugin
在WP工作之后我得到了同样的错误,但PHP已经更新,来自以下代码:
if($bgc==""){
$bgc="#eeeeee";
}else{ \
$bgc="";
}
$gmp_action = "delete-address";
?>
删除反斜杠修复它。
答案 3 :(得分:0)
试试这个:
$children[ $i['parent_id'] ][] = array($i['forum_id'], '<option value="'.$i['forum_id'].'"'.$sub_css.'"'.$selected.'> ', $i['forum_name'].$is_sub.'</option>'."\n");