php中的do与while问题

{
$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" )这一行,其实还有没有其它错误也不清楚,求高手解答。

出现错误的原因是
你的 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;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-13
老兄,你这个错误是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;

?>

php 高手进~ 关于 do-while 循环的问题~`
新加个变量 i , do-while 循环一次,i=i+1; 当地i=10时,就换行.

while(true) do{循环条件}什么意思?
while是循环流程控制,使用的标准格式为 while(表达式){ 循环语句体;} 说明:①while循环的表达式是循环进行的条件,用作循环条件的表达式中一般至少包括一个能够改变表达式的变量,这个变量称为循环变量 ②当表达式的值为真(非零)时,执行循环体;为假(0)时,则循环结束 ③当循环体不需要实现任何...

php中的do与while问题
你的 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 );} 的后面就...

php中for\/while\/do-while循环打印九九乘法表
第一步打开EasyEclipse for PHP软件。 会使用的直接复制下面代码,新建一个file.php好后,输入下面提供的代码。使用while循环输出9*9乘法口诀 ?php $i=1; \/\/使用while循环输出9*9乘法口诀 while($i=9) {   $j=1; while($j=$i) { echo "$j*$i=".$j*$i."...

简述php中循环语句种类
简述php中循环语句种类有如下:1、while-只要指定的条件成立,则循环执行代码块;2、do...while-首先执行一次代码块,然后在指定的条件成立时重复这个循环;3、for-循环执行代码块指定的次数;4、foreach-根据数组中每个元素来循环代码块。

[php]我想知道while和do..while 的区别
while先判断条件,再执行语句,DO,WHILE是先执行一条语句再判断是否继续执行。continue是跳出本次循环,break是直接跳出,执行下面的语句

php循环结构的怎么使用的实例详解
php的循环共有四种:while、do while、for、foreach。while循环:while (条件为真) { 要执行的代码;}do while循环:do { 要执行的代码;} while (条件为真);这两种循环的区别在于,while循环先判断条件后执行操作,而do while先执行一次操作后判断条件。for循环:for (init counter; test counter...

说出php语言的几种循环语句的使用格式,及其区别
<?php i=1;while($i<=5){ echo "The number is " . $i . "";i++;} ?> do...while 语句 do...while 语句会至少执行一次代码 - 然后,只要条件成立,就会重复进行循环。do { code to be executed;} while (condition);例子 下面的例子将对 i 的值进行一次累加,然后,只要 i ...

PHP使用do-while实现;输出摄氏温度与华氏温度的对照表
x=1;i=1;do { y=$x*9\/5.0+32;echo $x." ".$y."<Br\/>";x=$x+20;i++;} while ( $i<=10 )

while的语法
该循环程序在初次运行时会首先执行一遍其中的代码,然后当指定的条件为 true 时,它会继续这个循环。所以可以这么说,do...while 循环为执行至少一遍其中的代码,即使条件为 false,因为其中的代码执行后才会进行条件验证。 while 循环是 php 中最简单的循环类型。它和 C 语言中的 while 表现得一样。...

相似回答