php中的do与while问题
{$MODULE_ID=$ROW['MODULE_ID'];$MODULE_POS=$ROW['MODULE_POS'];$VIEW_TYPE=$ROW['VIEW_TY...
{
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
} while ( 0 );
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
}
如上代码,错误显示出现在else if ( $VIEW_TYPE == "3" )这一行,其实还有没有其它错误也不清楚,求高手解答。 展开
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
} while ( 0 );
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
}
如上代码,错误显示出现在else if ( $VIEW_TYPE == "3" )这一行,其实还有没有其它错误也不清楚,求高手解答。 展开
2个回答
展开全部
出现错误的原因是
你的 else if ( $VIEW_TYPE == "3" )
与上面 if ( $VIEW_TYPE == "2" )
不是并列关系
而是被 if ( $VIEW_TYPE == "2" ){}包含在内了
————————————————————————
解决办法
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
这一句
放到
while ( 0 );
}
的后面就可以了...
————————完整代码————————————————
{
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}
while ( 0 );
}
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
}
你的 else if ( $VIEW_TYPE == "3" )
与上面 if ( $VIEW_TYPE == "2" )
不是并列关系
而是被 if ( $VIEW_TYPE == "2" ){}包含在内了
————————————————————————
解决办法
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
这一句
放到
while ( 0 );
}
的后面就可以了...
————————完整代码————————————————
{
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}
while ( 0 );
}
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
}
展开全部
老兄,你这个错误是if else语句与do while循环语句的嵌套出错啦~~~~
我调整了下你的代码,你可以去比较下,只修改了
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
} while ( 0 );
这个地方,这个地方的while(0);是应该要放在前面那个大括号后面的啊,这样才能与do组成do while循环啊!
你把我下面帮你调整的代码再考到你的项目当中运行看看,还有没有错;
<?php
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}while (0);
}else if ( $VIEW_TYPE == "3" ){
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
?>
我调整了下你的代码,你可以去比较下,只修改了
else if ( $VIEW_TYPE == "3" )
{
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
} while ( 0 );
这个地方,这个地方的while(0);是应该要放在前面那个大括号后面的啊,这样才能与do组成do while循环啊!
你把我下面帮你调整的代码再考到你的项目当中运行看看,还有没有错;
<?php
$MODULE_ID = $ROW['MODULE_ID'];
$MODULE_POS = $ROW['MODULE_POS'];
$VIEW_TYPE = $ROW['VIEW_TYPE'];
if ( $VIEW_TYPE == "2" )
{
do
{
if ( !find_id( $USER_MODULE_LEFT, $MODULE_ID ) )
{
if ( find_id( $USER_MODULE_RIGHT, $MODULE_ID ) )
{
break;
}
else
{
if ( $MODULE_POS == "l" && $USER_MODULE_LEFT != "ALL" )
{
$USER_MODULE_LEFT .= $MODULE_ID.",";
break;
}
else
{
if ( !( $MODULE_POS == "r" ) && !( $USER_MODULE_RIGHT != "ALL" ) )
{
break;
}
$USER_MODULE_RIGHT .= $MODULE_ID.",";
}
}
}
}while (0);
}else if ( $VIEW_TYPE == "3" ){
$MODULE_STR_HIDDEN .= $MODULE_ID.",";
}
if ( $VIEW_TYPE != "3" )
{
if ( $MODULE_POS == "l" )
{
$MODULE_LEFT_STR .= $MODULE_ID.",";
}
else
{
$MODULE_RIGHT_STR .= $MODULE_ID.",";
}
}
$MYTABLE[$MODULE_ID] = $ROW;
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询