布尔型循环就是为真的时候执行,为假的时候停止

注意:
1.循环能够节约大量的代码,提高重用性质
2.循环,一定要有退出条件。
3.While循环中,在while循环之前必须对变量进行初始化;

单层循环:语法结构

While(bool判断){
Echo '要循环的代码'; //可以是一条语句,也可以是多条语句;
}
<?php
$a=0; //对变量初始化设置
while($a<3){
echo:'今天天气真好<br>';
echo $a++;
} ?>

多层循环:语法结构

While(bool判断)
{
while(bool判断){
第二层循环的代码;
}
第一层要循环的代码;
}

注意:
在循环里再套循环。一般循环,不会超过二层。

使用while双层循环输出一个10行10列的表格:

<?php
$i=0
echo '<>table border="1" width="800">';
while ($i<10) {
if($i%2!=0){
echo '<tr bgcolor="#898989">';
}else{
echo '<tr>'; }
$j=0;
while ($j<10) {
echo '<td>'.$j.'</td>';
$j++;
}
echo '</tr>';
$i++
} echo '</table>'; ?>

使用while单层循环输出一个10行10列的表格:

<?php
echo '<table border="1" width="800">';
$i=0;
while ($i<100) { //这里要为100才可以
if ($i%10==0) {
if ($i%20!=0) { //也可以写if($i/10%2!=0)
echo '<tr bgcolor="#898989">'; //隔行变色
}else {
echo '<tr>';
}
}
echo '<td>'.$i.'</td>';
if ($i%10==9) { //这里要是19、29、39、49....99的时候输出<tr>
echo '</tr>';
}
$i++;
}
echo '</table>';
?>

do { } while { }循环:

<?php
$i=0;
do {
echo '需要可执行代码';
} while ($i<10);
?>

语法注意:
do while和while循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和正则的while循环主要的区别是do while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在正则的while循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为False则整个循环立刻终止)。

计数器循环

例子1:初始化变量

<?php

for ($i = 1; $i <= 10; $i++) {
echo $i;
}
?>

例子2:退出条件

<?php
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
?>

例子3:循环添加,自增自减等

<?php
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
?>

例子4:

<?php
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>

当然,第一个例子看上去最正常(或者第四个),但用户可能会发现在 for 循环中用空的表达式在很多场合下会很方便。

语法:

每个表达式都可以为空或包括逗号分隔的多个表达式。表达式 expr2 中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。expr2 为空意味着将无限循环下去(和 C 一样,PHP 认为其值为 TRUE)。

使用循环遍历数组:

$arr[$i]:获得数组中对应键的值
count() - 计算数组中的单元数目或对象中的属性个数

$arr=array(1,2,3,4,5,6,7,8,9,);
echo count($arr); //统计数组中的元素的个数

扩展:

PHP是它是解释型语言,它的效率相对较低。对于循环时的count每次都会count这样的话,效率很低。
我们可以将,统计到的数值,直接赋值给一个变量,判断这个变量就可以了,减少统计次数。
提前 $j 到前面

for($i=0,$j=count($aray);$i<$j;$i++){
echo '金融跟每个人相关'.$array[$i].'<br>';
}
<?php
$arr=array("张三","李四"); for ($i=0; $j=count($arr);$i<$j;$i++){
echo $arr[$i].'<br>'; } ?>

【重点】使用循环遍历目录

首先需要掌握的函数有:
opendir — 打开开一个目录,返回一个资源类型,如果成功则返回目录句柄的 resource,失败则返回 FALSE 并且报错 使用@抑错
Is_dir — 判断给定的文件名是否是一个目录;
Closedir — 关闭目录,传入一个打开的目录资源
Readdir — 【 NOTICE:填入一个已经用opendir打开的文件目录资源】

传进一个目录资源,返回打开的目录名称,读一次向下移动一次,读到目录的最后一个文件后,返回false
Count — 可以统计数组当中的元素个数【此函数的别名:sizeof() 】
 
例子:

<?php
$dir='c:\xmzncc';
$tkp=opendir($dir);
var_dump($tkp); while ($filename=readdir($tkp)) {
echo $filename.'<br>'; }
closedir($tkp);
?>

函数分为:自定义函数及系统函数

自定函数的基本语法格式:

 <?php
function 名字(参数1[=值],参数2[=值],…..参数n[=值]){
做事情的代码 //return ;
} ?>

命名函数需要注意的事项:

1.名字不能重复,不能重名。
2.函数就是一条狗,不叫它名字,它不执行。
3.函数不要重名,即使是系统函数
4.函数不能以数字开始,数字可以接到中间和结尾
5.不能接特殊符号,下划线除外
6.函数在命名的时候,只有数字,字母,下划线
7.函数名不区分大小写
8.函数可以在任意位置调用【注意】

函数里return和echo的区别:
在函数里面,echo一个值仅仅会输出,调用函数的时候,输出的值不会赋值给变量$a
Return 是将return 后面的值,返回到调用处。

例子:

<?php
function seven(){ echo '夏末终年'; }
$a=seven();
var_dump($a);
?>

注释:
$a=seven( ) //这里的函数是echo一个值的作用仅仅是输出 函数里echo 后的代码

这是 函数没有返回值 只有一个功能 输出的值不能赋给变量 var_dump($a) 为空; NULL

(Return 后的值会返回调用处)此时值可以赋给变量 ,此时$a变量的值和类型由return 返回的值得类型决定 。

函数的形参及实参:

<?php
Function demo( $one , $two ){ //$one 及 $two 为形参 return $one+$two;
} $t= demo ( 8, 9 ); //传入的 8 和 9为实参 并把函数 计算 8+9的值赋给$t
?>

注意:
1.如果调用一个函数的时候,函数当中有形参,形参当中没有默认值,你就必须要传实参,否则报错。
2.神马叫形参当中木有默认值?
3.如果形参有默认值,并且在实参当中没有传参数,就按照默认值来执行。如果加上了实参,就按照实参来执行。

注意:
由于它一一对应的关系,由于它的语法特性,不能将有默认值的用逗号直接跳过去。因此,我们在写的时候,将有默认值的放到后面,无默认值的形参放到前面。

PHP流程控制(二)的更多相关文章

  1. Java中的流程控制(二)

    关于Java程序的流程控制(二) 关于Java程序的流程控制(二) 3.switch选择语句 switch语句用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句. switch( ...

  2. Swift学习——格式控制符和元组流程控制(二)

    Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  比如学生表中的姓名,年龄,电话等 定义例如以下 var studentinfo = ("jhon", ...

  3. 流程控制<二>

    上一篇:Numbers.Strings.Lists 笔记<一>下一篇:数据结构-Python3.7<三> 如果需要修改迭代中的数据,建议先赋值一个副本(e.g:序列,切片复制的 ...

  4. SpringMVC(二)——流程控制

    SpringMVC主要就是用来做流程控制的,这篇博客总结一下如何在流程控制添加Interceptor(拦截器),如何将进行流程Mapping映射解析,如何编写Controller(控制器). 一,首先 ...

  5. JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结

    JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学-- ...

  6. C#基础课程之二变量常量及流程控制

    课堂练习:.一个四位整数 输出它的千位,百位,十位,个位 数字. ; ; % ; % ; ; Console.WriteLine("千位数" + b+" 百位数" ...

  7. Go语言入门(二)Go语言中的变量、常量、数据类型、流程控制以及函数

    Go语言中的变量 通常用var关键声明变量,有常规方式和简化方式. 常规方式: var name1 type1 name1 = value1 //赋值 简化方式: var name2 = value1 ...

  8. JavaScript (二) js的基本语法 - - 运算符、流程控制

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.运算符 1.一元运算符 ++ -- 都是运算符 ++ 和 -- 可以分为:前+ 和后+ and 前- ...

  9. java 基本语法(五) 流程控制(二) 循环结构

    1.循环结构的四要素① 初始化条件② 循环条件 --->是boolean类型③ 循环体④ 迭代条件说明:通常情况下,循环结束都是因为②中循环条件返回false了. 2.三种循环结构:2.1 fo ...

  10. flutter--Dart基础语法(二)流程控制、函数、异常

    一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,Flutter 开源.免费,拥有宽松的开源协议,支持移动.Web.桌面和嵌入式平台. ...

随机推荐

  1. CCS使用TIPS

    2013-06-20 09:37:49 CCS使用TIPS: 代码编写: CCS中通过Using CodeSense方便写代码,跟VC助手类似,具体使用方法在ccs的help中搜索using visu ...

  2. 函数buf_ptr_get_fsp_addr

    #define FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID  34 /****************************************************** ...

  3. php discuz框架接口不能正常访问的问题

    本人php小白,无php编程基础,直接上php服务器部署,后果很严重.....所以务必看完请给”顶“给评论,以表示对小白的鼓励和赞赏! 关于discuz框架,独自加班,废寝忘食,然已无力吐槽..... ...

  4. UVa 1644 (筛素数 + 二分) Prime Gap

    题意: 给出一个整数n,如果n是素数输出0,否则输出它后一个素数与前一个素数的差值. 分析: 首先用筛法把前十万个素数都筛出来,然后放到数组里.用二分找到不大于n的最大的素数的下标,如果这个素数等于n ...

  5. linux watchdog demo hacking

    /********************************************************************** * linux watchdog demo hackin ...

  6. LeetCode Delete Node in a Linked List (删除链表中的元素)

    题意:给一个将要删除的位置的指针,要删除掉该元素.被删元素不会是链尾(不可能删得掉). 思路:将要找到前面的指针是不可能了,但是可以将后面的元素往前移1位,再删除最后一个元素. /** * Defin ...

  7. (九)学习CSS之margin属性

    参考: 所有浏览器都支持 margin 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 margi ...

  8. InstallShield高级应用--检查是否安装ORACLE或SQL Server

    InstallShield高级应用--检查是否安装ORACLE或SQL Server   实现原理:判断是否存在,是通过查找注册表是否含有相应标识来判断的. 注意:XP与WIN7系统注册表保存方式不一 ...

  9. 关于C#中static静态变量

    C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...

  10. 与非CCR代码互操作

    导读:CCR可以轻松的承载STA组件或者与它互操作:组件应该创建一个只有一个线程的CCR Dispatcher实例,并且在Dispatcher的构造函数中指定线程套间策略.DispatcherQueu ...