GVKun编程网logo

将PHP while循环转换为使用PDO(php的while循环)

29

如果您想了解将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循环)

将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

在功能上,foreachwhile实现是等效的。从概念上讲,aforeach更合适,因为while循环具有在静态条件成立时进行循环的含义,而foreach在集合的元素上进行循环。

请务必阅读PDO上的php.net参考

c – 将while循环转换为for循环

c – 将while循环转换为for循环

有一个简单的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.在你原来的while循环中,我永远不会增加.

试试这个:

for (i=1; i<=128; i*=2)  //  Remove i++,move the i*=2 here.
{
    printf("%d",i);
}

C语言循环结构(while循环,for循环,do…while循环)

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循环,C语言do while循环详解

do…while 循环不经常使用,其主要用于人机交互。它的格式是:

do
{
    语句;
}
while (表达式);

注意,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详解

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循环转换为使用PDOphp的while循环的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c – 将while循环转换为for循环、C语言循环结构(while循环,for循环,do…while循环)、do while循环,C语言do while循环详解、Java if条件判断+while循环+do while循环+switch+for循环+continue+break+return详解等相关内容,可以在本站寻找。

本文标签: