如果您想了解将PHPwhile循环转换为使用PDO的相关知识,那么本文是一篇不可错过的文章,我们将对php的while循环进行全面详尽的解释,并且为您提供关于c–将while循环转换为for循环、C语
如果您想了解将PHP while循环转换为使用PDO的相关知识,那么本文是一篇不可错过的文章,我们将对php的while循环进行全面详尽的解释,并且为您提供关于c – 将while循环转换为for循环、C语言循环结构(while循环,for循环,do…while循环)、do while循环,C语言do while循环详解、Java if条件判断+while循环+do while循环+switch+for循环+continue+break+return详解的有价值的信息。
本文目录一览:- 将PHP while循环转换为使用PDO(php的while循环)
- c – 将while循环转换为for循环
- C语言循环结构(while循环,for循环,do…while循环)
- do while循环,C语言do while循环详解
- Java if条件判断+while循环+do while循环+switch+for循环+continue+break+return详解
将PHP while循环转换为使用PDO(php的while循环)
我目前正在通过切换到PDO来更新我的应用。我有以下代码:
$stmt = $db->prepare("select * from `product` where productid in (:productidLst)");$stmt->bindParam(":productidLst",$productidLst, PDO::PARAM_INT);$stmt->execute();
在上面的代码之后,var $ productidLst为1,2,我想使用与此等效的PDO:
while($rs=mysql_fetch_assoc($res)){ $rs[''qty'']=$_SESSION[''basket''][$rs[''productid'']]; $rs[''total''] += $rs[''qty'']*$rs[''price'']; $total += $rs[''total'']; $a[] = $rs;}
我已经尝试了多种组合,但是没有成功,因此对此提供任何帮助将不胜感激(在第二个代码块$ res中是sql)。其次,我将参数$
productidLst设置为INT是否正确或应该是字符串?
--------------------更新1 ---------------------------- ------------------------
我尝试了以下代码:
$stmt = $db->prepare("select * from `product` where productid in (:productidLst)");foreach ($stmt->execute(array('':productidLst'' => $productidLst)) as $row) { $total += $row[''total''];}
返回值:为foreach()错误提供了无效的参数
答案1
小编典典PHP手册中的标准文档通常会很有帮助。PHP手册PDO
Details中有一个使用PDO执行for循环的示例。
function getFruit($conn) { $sql = ''SELECT name, color, calories FROM fruit ORDER BY name''; foreach ($conn->query($sql) as $row) { print $row[''name''] . "\t"; print $row[''color''] . "\t"; print $row[''calories''] . "\n"; }}
进行一些更改,就可以使该示例使用准备好的语句。
function getFruit($conn) { $query = $conn->prepare(''SELECT name, color, calories FROM fruit WHERE kind=:kind ORDER BY name''); $query->execute(array('':kind'' => ''drupe'')); // alternatively you could use PDOStatement::fetchAll() and get rid of the loop // this is dependent upon the design of your app foreach ($query as $row) { print $row[''name''] . "\t"; print $row[''color''] . "\t"; print $row[''calories''] . "\n"; }}
您还可以使用while
循环并PDOStatement::fetch
获取每一行。
function getFruit($conn) { $query = $conn->prepare(''SELECT name, color, calories FROM fruit WHERE kind=:kind ORDER BY name''); $query->execute(array('':kind'' => ''drupe'')); // alternatively you could use PDOStatement::fetchAll() and get rid of the loop // this is dependent upon the design of your app while ($row = $query->fetch(PDO::FETCH_ASSOC)) { print $row[''name''] . "\t"; print $row[''color''] . "\t"; print $row[''calories''] . "\n"; }}
PHP手册在提供创建后两个版本的所有必要信息方面仍然非常有帮助。
最新版本的解释:假设$conn
是有效的PDO对象。 如果成功,失败 或
基于您的错误处理的异常,则$conn->prepare($sql)
返回一个PDOStatement
对象。因此,假设成功,我们实际上希望从对象中获取数据。我们可以循环使用,也可以根据您的应用获取数据。您猜对了,传递类常量将返回一个关联的数据数组。false
__$query->fetch()
$query->fetchAll()
PDO::FETCH_ASSOC
在功能上,foreach
和while
实现是等效的。从概念上讲,aforeach
更合适,因为while
循环具有在静态条件成立时进行循环的含义,而foreach
在集合的元素上进行循环。
请务必阅读PDO上的php.net参考
c – 将while循环转换为for循环
i=1 while(i<=128) { printf("%d",i); i*=2; }
这是我的for循环
for (i=1;i<=128;i++) { printf("%d",i); i*=2; }
怎么不给出相同的输出?第一个将打印1248163264128,for循环打印137153163127?
解决方法
试试这个:
for (i=1; i<=128; i*=2) // Remove i++,move the i*=2 here. { printf("%d",i); }
C语言循环结构(while循环,for循环,do…while循环)
使用循环可以多次重复地执行多条语句,这里的“多条语句”称为循环体。在C语言中,可以使用三种循环,分别是:while、do...while和for。在这些语句中,循环体被重复执行的次数由循环条件控制,称为控制表达式(controlling expression)。这是一个标量类型的表达式,也就是说,它属于一个算术表达式或指针表达式。如果控制表达式的值不等于 0,循环条件为 true,反之,循环条件为 false。
语句 break 和 continue 用于在一次循环还未执行完时,跳转出循环或返回到循环头部。
while 循环
只要控制表达式为 true,while 循环就会反复地执行语句:while (表达式)语句
while 表达式是顶部驱动(top-driven)的循环:先计算循环条件(也就是控制表达式)。如果为 true,就执行循环体,然后再次计算控制表达式。如果控制表达式为 false,程序跳过循环体,而去执行循环体后面的语句。
从语法上讲,循环体只有一条语句组成。如果需要执行多条语句时,可以使用语句块把它们组合在一起。例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。
例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。
【例1】一个 while 循环
/* 从键盘输入数字,然后输出它们的平均值 * -------------------------------------- */ #include <stdio.h> int main() { double x = 0.0,sum = 0.0; int count = 0; printf( "\t--- Calculate Averages ---\n" ); printf( "\nEnter some numbers:\n" "(Type a letter to end your input)\n" ); while ( scanf( "%lf",&x ) == 1 ) { sum += x; ++count; } if ( count == 0 ) printf( "No input data!\n" ); else printf( "The average of your numbers is %.2f\n",sum/count ); return 0; }
在例 1 中,只要用户输入一个小数,下面的控制表达式即为 true:
scanf( "%lf",&x ) == 1
然而,只要函数 scanf()无法将字符串输入转换成浮点数(例如,当用户键入字母 q 时),则 scanf()返回值 0(如果是遇到输入流的尾端或发生错误时,则返回值 -1,表示 EOF)。这时,循环条件为 false,程序将会跳出循环,继续执行循环体后面的 if 语句。
for 循环
和 while 一样,for 循环也是一个顶部驱动的循环,但是它包含了更多的循环逻辑,如下所示:
for ([表达式1];[表达式2];[表达式3])
语句
在一个典型的 for 循环中,在循环体顶部,下述三个动作需要执行:
(1) 表达式 1:初始化
只计算一次。在计算控制表达式之前,先计算一次表达式 1,以进行必要的初始化,后面不再计算它。
(2) 表达式 2:控制表达式
每轮循环前都要计算控制表达式,以判断是否需要继续本轮循环。当控制表达式的结果为 false,结束循环。
(3) 表达式 3:调节器
调节器(例如计数器自增)在每轮循环结束后且表达式 2 计算前执行。即,在运行了调节器后,执行表达式 2,以进行判断。
例 2 展示了使用一个 for 循环初始化数组内每个元素的过程。
【例2】用 for 循环初始化数组
#define ARR_LENGTH 1000 /* ... */ long arr[ARR_LENGTH]; int i; for ( i = 0; i < ARR_LENGTH; ++i ) arr[i] = 2*i;
for 循环头部中的三个表达式可以省略一个或多个。这意味着 for 循环头部最短的形式是:
for ( ; ; )
如果没有控制表达式,则表示循环条件始终是 true,也就是说,这定义了一个死循环。
下面所示的 for 循环,既没有初始化表达式,也没有调节器表达式,它与 while(表达式)语句含义是等效的:
for ( ;表达式; )
事实上,每个 for 循环都可以被改写成 while 循环,反之亦然。例如,例 2 的 for 循环可完全等效为下面的 while 循环:
i = 0; // 初始化计数器 while ( i < ARR_LENGTH ) // 循环条件 { arr[i] = 2*i; ++i; // 递增计数器 }
一般来说,当循环内有计数器或索引变量需要被初始化,并且在每次循环时需要调整它们的值时,最好使用 for 循环,而不是 while 循环。
在ANSI C99中,也可以使用声明来替代表达式1。在这种情况下,被声明变量的作用域被限制在 for 循环范围内。例如:
for ( int i = 0; i < ARR_LENGTH; ++i ) arr[i] = 2*i;
变量 i 被声明在该 for 循环中(与例 2 不同)for 循环结束之后,变量 i 将不会再存在。
逗号运算符常常被用在 for 循环头部,以在表达式 1 中实现多个初始化操作,或者在表达式 3 对每个变量做调整操作。例如,函数 strReverse()使用两个索引变量以保存字符串中字符的次序:
void strReverse( char* str) { char ch; for ( size_t i = 0,j = strlen(str)-1; i < j; ++i,--j ) ch = str[i],str[i] = str[j],str[j] = ch; }
借助于逗号运算符,可以在只允许出现一个表达式的地方,计算多个表达式。
do...while 循环
do...while 循环是一种底部驱动的循环:do 语句 while (表达式);
在控制表达式被第一次计算之前,循环体语句会首先被执行一次。与 while 和 for 循环不同,do...while 循环会确保循环体语句至少执行一次。如果控制表达式的值为 true,那么另一次循环就会继续;如果是 false,则循环结束。
在例 3 中,读入与执行命令的函数至少会被调用一次。当使用者离开菜单系统,函数 getCommand()将返回常量 END 的值。
【例3】do···while
// 读入和执行所选的菜单命令 // -------------------------------------------- int getCommand( void ); void performCommand( int cmd ); #define END 0 /* ... */ do { int command = getCommand(); // 询问菜单系统 performCommand( command ); // 执行所选的菜单命令 } while ( command != END );
例 4 展示了标准库函数 strcpy()的一个版本,循环体仅为一条简单的语句,而不是一个语句块。因为在循环体执行之后才计算循环条件,所以字符串终止符'\0'也会被复制。
【例4】函数 strcpy()使用 do...while
// 将字符串2复制到字符串1 // ---------------------------- char *strcpy( char* restrict s1,const char* restrict s2 ) { int i = 0; do s1[i] = s2[i]; // 循环体:复制每一个字符 while ( s2[i++] != '\0' ); // 如果刚刚复制的是'\0',则结束循环 return s1; }
do while循环,C语言do while循环详解
do…while 循环不经常使用,其主要用于人机交互。它的格式是:
do
{
语句;
}
while (表达式);
do…while 和 while 的执行过程非常相似,唯一的区别是:“do…while 是先执行一次循环体,然后再判别表达式”。当表达式为“真”时,返回重新执行循环体,如此反复,直到表达式为“假”为止,此时循环结束。
现在问一个问题:你认为 while 和 do…while 是否等价?它们是否可以相互转换?我们前面讲,while 和 for 是完全等价的,它们是可以相互转换的。那 do…while 和 while、for 等价吗?它们可以相互转换吗?
答案是“不能”。原因十分简单,while 循环体内部不一定会执行,当表达式一开始就为假的时候它就不会执行。但 do…while 不管表达式开始为真还是为假,循环体内部都会先执行一次。
下面举个例子,设计一个计算“一元二次方程”的程序。运行的结果是让你输入三个数,然后计算结果,完了之后还会问你:“您想继续吗?”想继续的话可以再输入三个数,不想继续,输入“N”就退出。下面就来写这个程序:
# include <stdio.h> # include <math.h> int main(void) { float a,b,c; //定义一元二次方程的三个系数 char k; //用于后面判断是否要继续输入 double delta,x1,x2; /*delta用来存储b*b - 4*a*c的值;x1和x2的值分别为方程的解*/ do { //输入一元二次方程的三个系数a、b、c printf("请输入一元二次方程的三个系数,用回车分隔:\n"); printf("a = "); scanf("%f",&a); while(getchar() != '\n'); /*容错处理,scanf后面都加上这一句,作用是清空输入缓冲区,以防用户乱输入*/ printf("b = "); scanf("%f",&b); while(getchar() != '\n'); printf("c = "); scanf("%f",&c); while(getchar() != '\n'); delta = b*b - 4*a*c; //判断delta的值是大于零,等于零,还是小于零 if (delta > 0) { x1 = (-b +sqrt(delta)) / (2*a); x2 = (-b -sqrt(delta)) / (2*a); printf("有两个解,x1 = %f,x2 = %f\n",x2); } else if (0 == delta) { x1 = x2 = (-b) / (2*a); printf("有唯一解,x1 = x2 = %f\n",x1); } else { printf("无实数解\n"); } //询问是否想继续输入 printf("您想继续吗,Y想,N不想:"); scanf("%c",&k); //输入Y或者N,表示“想”或“不想” while(getchar() != '\n'); } while ('Y' == k); return 0; }输出结果是:
请输入一元二次方程的三个系数,用回车分隔:
a = 1
b = 5
c = 6
有两个解,x1 = -2.000000,x2 = -3.000000
您想继续吗,N不想:Y
请输入一元二次方程的三个系数,用回车分隔:
a = 2
b = 3
c = 4无实数解
您想继续吗,N不想:N
程序中,“while(getchar()!='\n');”是 getchar() 的高级用法,作用是彻底地清空输入缓冲区。getchar() 每次从缓冲区中取出一个字符,只要取出的字符不是回车就一直取,这样就将缓冲区中所有的垃圾字符都取出来了。
此外,do…while(1) 和 while(1) 虽然不等价,但是在功能上可以互换,因为反正是无限制循环,所以不管是先执行一次循环体再判断,还是先判断再执行循环体结果都一样。但如果 while 后面的表达式不是 1,那就不能相互替换。大家看上面这个程序,do…while 中不是 do…while(1),而是 do…while('Y'==k),即只有 'Y'==k 才执行循环,但只有先执行一次循环体才知道变量 k 中存储的是什么,才能执行最后的 while('Y'==k),这样就无法用 while(1) 来替代。因此 do…while 一般的使用场合为 while 后的表达式不为 1。
这就是人机交互,用户与机器里面的一个程序进行相互交流:机器给一个提示,用户输入一个值,然后机器再将结果返回给用户,然后再给你一个提示……就这样一步一步执行。do…while 主要用于人机交互,在其他地方都用得很少。
Java if条件判断+while循环+do while循环+switch+for循环+continue+break+return详解
一.软件生命周期
什么是软件:
软件是程序员根据需求用计算机的语言去编写一系列的指令的集合,能让计算机快速去自动执行。
1.1做市场调研-----》调研报告书 ======项目经理
1.2可行性分析-----》可行性说明书 ======项目经理
----------------------------------------------------------
1.1市场人员去跟单位领导沟通,派软件公司的项目经理跟单位领导进行沟通,得到软件的生产权。XORP软件。 ======项目经理
每个员工的薪水*人数*时间(工作日)*2
1.3系统需求说明书 ======项目经理
1.4系统功能说明书(建筑中的图纸) ======项目经理
1.5系统概要设计说明书(低保真的原型设计) ========UI设工程师
1.6系统详细设计说明书(高保真的原型设计,给客户看)(建筑中模型) UI设工程师 ======项目经理
1)uml建模(类图,时序图,用例图,活动图,状态图等等)----程序员看 ======项目经理
2)数据库设计(ER(实体关系模型)图设计,用Excel表格表述建表的信息。在数据库建表,超过20张表用powerdesigner设计)----程序员看======项目经理
3)系统框架设计(公共类的编写,通用代码的编写,分模块,分层,接口设计,主要的配置。。。。。) ======项目经理
4)ui设计(swing很少,HTML+css,JavaScript,jQuery, winfor,画图工具。)----程序员做
1.7按模块按任务去分配给代码民工写代码,做白盒测试,单元测试是期中的一种。----程序员做
1.8项目集成,模块之间的集成,集成测试 ======项目经理
1.9测试人员做黑盒测试,把测出的问题交给开发部解决。 ======测试工程师
1.10发布,试运行。======维护工程师
1.11真正发布,运行并维护,运作2年才比较稳定。======维护工程师
1.12维护升级
1.13随着时间的推移,维护升级成本越来越高,终止软件的生命,推倒项目重新做。
二.if判断
1.选择结构
2.循环结构
3.顺序结构
1 if判断的三种基本形式
用来判断某个条件,条件成立然后就执行一些代码
1.单分支:(单项选择)
if(布尔表达式){}
2.双分支:(二选一)
if(布尔表达式){...}else{...}
3.多分支:(多选一)
if(布尔表达式){...}else if(布尔表达式)else if(布尔表达式){}else{}
三.switch
1 switch
特殊的多分支:(多选一)
2 switch结构
jdk1.5: 可以枚举Enum
jdk1.7: 字符串String
3 执行流程
当找到第一个满足条件 的case时,开始执行,并且会顺序的往下执行其它分支,要终止这种执行过程,就必须在每个case的后面加上break;
如果没有一个case满足,就执行default分支
default可以存在和不存在,如果存在,可以放到任何位置。但是我们最好把它放到最后。
4.从1.7切换到1.6版本执行
四.循环
(1)while
生活中的循环:打印机打印文件,走路,学习,吃饭.........凡是要重复做的事情都是循环。
循环四要素:
1)初始值
2)循环条件
3) 循环操作语句
4)步长
1 while结构
2 执行流程
重复执行2-3-4,直到2的条件不满足
while有一个东西很重要,就是改变条件最终让它为假
3 使用场合
while循环适用于不知道固定次数
条件不满足情况下,循环体得不到执行。
(2)do....while
1 do while结构
2 执行过程
无条件执行一次,条件不满足情况下,都会执行一次。
3 doWhile与while的差别
1.都是用在循环次数不确定的场合。
* 2.while :先判断再执行,do....while 先执行,在判断。
* 3.在条件不满足的情况下,do....while至少被执行一次。
(3)for循环
1 for循环的结构
2 执行流程
3 for循环使用场合
需要重复执行固定次数
4 for循环嵌套
5 for循环的其它写法
(4)foreach
循环输出每一个元素。
数组,集合
五.断开break
1 break的使用
打断,打断(终止)正在执行循环或者switch,
在switch和循环的外部不能使用break
2 使用例子
for(int i=0;i<10;i++){ //3
if(i==3){
break;
}
System.out.println(i);
}
outer:
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j==3 && i==3){
break outer;
}
System.out.print(j+"*"+i+" ");
}
System.out.println();
}
int i=0;
while(true){
if(i==5){
break;
}
System.out.println(i);
i++;
}
六.继续continue
1 continue
终止当次循环,立刻进入到下一次
continue只能在循环中使用
2 例子
for(int i=0;i<10;i++){ //3
if(i==3){
continue;//需要跟判断语句一起使用
}
System.out.println(i);
}
七.返回return
1 return作什么用
1)返回一个值(程序执行后的结果)
2)导致立即退出当前执行函数(方法)
2 使用例子
for(int i=0;i<10;i++){ //3
if(i==3){
//break;
return;
}
System.out.println(i);
}
System.out.println("---------->for循环执行完了");
关于将PHP while循环转换为使用PDO和php的while循环的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c – 将while循环转换为for循环、C语言循环结构(while循环,for循环,do…while循环)、do while循环,C语言do while循环详解、Java if条件判断+while循环+do while循环+switch+for循环+continue+break+return详解等相关内容,可以在本站寻找。
本文标签: