PHP循环之PHP基础入门教程
PHP中的循环主要用户执行相同代码块运行指定的次数。
PHP循环主要有四种:while,do…while,for,foreach。下面我们分开讲解每种循环的用法。
while语句:
只要指定的条件成立,则循环执行代码块。
格式:
while(expr)
{
statement;
}
语义:首先判断expr,如果表达式expr为假则结束;如果表达式expr为真,执行statement语句,执行完毕再次判断expr,若表达式expr仍为真,则继续执行statement语句;直至表达式expr为假,结束。
例:
代码如下 | 复制代码 |
<?php |
上面的例子示范了一个循环,只要变量 i 小于或等于 5,代码就会一直循环执行下去。循环每循环一次,变量就会递增 1,然后输入i的值;
do…while 语句:
首先执行一次代码块,然后在指定的条件成立时重复这个循环.
格式:
do{
statement;
}
while(expr)语义:首先执行一次statement语句,然后再判断expr,如果表达式expr为假则结束;如果表达式expr为真,则继续循环执行statement语句,执行完毕再次判断expr,若表达式expr仍为真,则继续执行statement语句;直至表达式expr为假,结束。
注意:他和while的区别在于,do…while第一次不进行任何判断就执行一次语句,然后再进行判断条件是否成立,这里要注意,其他和while是一样的。
例子:
代码如下 | 复制代码 |
<?php |
上面的例子示范了一个循环,我给变量i赋值6,这里很显然和while中的条件相比较是不成立的,但结果输入6,也就是之前说的do…while语句,他第一次没进行任何判断,先执行一次,然后再判断条件是否成立。
for 语句
:如果您已经确定了代码块的重复执行次数,则可以使用 for 语句。
语法
for (initialization; condition; increment)
{
code to be executed;
}
语义:for 语句有三个参数。第一个参数初始化变量,第二个参数保存条件,第三个参数包含执行循环所需的增量。如果 initialization 或 increment 参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为 true 或者 false。
例子:
下面的例子会把文本 “Hello World!” 显示 5 次:
代码如下 | 复制代码 |
<?php |
foreach 语句:foreach 语句用于循环遍历数组。
每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) – 以此类推。
语法
foreach (array as value)
{
code to be executed;
}
例子
下面的例子示范了一个循环,这个循环可以输出给定数组的值:
代码如下 | 复制代码 |
<?php |
释义:首先我定义一个数组arr,然后我使用foreach来循环,其中($arr as $value)的意思是,把$arr数组中的值赋给$value,然后执行语句是输出$value的值。
输出的结果为:
one
two
three
PHP 中的 Switch 语句用于执行基于多个不同条件的不同动作。
Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。
语法
代码如下 | 复制代码 |
switch (expression) |
实例
工作原理:
对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句
代码如下 | 复制代码 |
<?php </body> |
什么是数组?
在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量。
无需很多相似的变量,你可以把数据作为元素存储在数组中。
数组中的元素都有自己的 ID,因此可以方便地访问它们。
有三种数组类型:
数值数组
带有数字 ID 键的数组
关联数组
数组中的每个 ID 键关联一个值
多维数组
包含一个或多个数组的数组
数值数组
数值数组存储的每个元素都带有一个数字 ID 键。
可以使用不同的方法来创建数值数组:
例子 1
在这个例子中,会自动分配 ID 键:
代码如下 | 复制代码 |
$names = array("Peter","Quagmire","Joe"); |
例子 2
在这个例子中,我们人工分配的 ID 键:
代码如下 | 复制代码 |
$names[0] = "Peter"; <?php $names[0] = "Peter"; echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors"; 以上代码的输出: Quagmire and Joe are Peter's neighbors |
关联数组
关联数组,它的每个 ID 键都关联一个值。
在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。
通过关联数组,我们可以把值作为键,并向它们赋值。
例子 1
在本例中,我们使用一个数组把年龄分配给不同的人:
代码如下 | 复制代码 |
$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34); |
例子 2
本例与例子 1 相同,不过展示了另一种创建数组的方法:
代码如下 | 复制代码 |
$ages['Peter'] = "32"; $ages['Quagmire'] = "30"; $ages['Joe'] = "34"; |
可以在脚本中使用 ID 键:
代码如下 | 复制代码 |
<?php $ages['Peter'] = "32"; echo "Peter is " . $ages['Peter'] . " years old."; 以上脚本的输出: Peter is 32 years old. |
多维数组
在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推。
例子 1
在本例中,我们创建了一个带有自动分配的 ID 键的多维数组:
代码如下 | 复制代码 |
$families = array Array |
例子 2
让我们试着显示上面的数组中的一个单一的值:
代码如下 | 复制代码 |
echo "Is " . $families['Griffin'][2] . 以上代码的输出: Is Megan a part of the Griffin family? |
+ :
首先出现的会覆盖后出现的
array_merge:
后出现的会覆盖前面出现的。但是如果是数字索引,则是叠加效果。
代码如下 | 复制代码 |
$array1 = Array( $array2 = Array( array_merge 后: + 后: 情况二: $array1 = Array( $array2 = Array( |
结果很明显:
array_merge就是两个数组的相加,键值如果是数字的话 会重新排列 如果不的话是不会修改
而+是两个数组相加会把相同的键值的值会被前面的数组给替换,如果不一样的键值那就和array_merge一样的效果.
第一种情况:子类没有定义构造函数时,默认继承。
第二种情况:子类定义了构造函数,则不会被继承。
对于4.x,如果父类恰好定义了子类的同名函数,则会被当做子类的构造函数:
代码如下 | 复制代码 |
class A function B() class B extends A //php4 will call B() |
上面的代码在php5中则会调用A而不会调用B()
PHP面向对象:接口实例
们设计一个在线销售系统,用户部分设计如下:
将用户分为,NormalUser, VipUser, InnerUser三种。
要求根据用户的不同折扣计算用户购买产品的价格。
并要求为以后扩展和维护预留空间。
用户部分先声明了一个接口User,用户都是User的实现。
user.php
代码如下 | 复制代码 |
<? class VipUser extends AbstractUser { class InnerUser extends AbstractUser { |
关于产品,我们进行了如下设计。
声明一个接口Product,然后从Product继承下Book接口。
在线销售的图书最后是实现了Book接口的BookOnline类。
Product.php
代码如下 | 复制代码 |
<? interface Book extends Product { // book是产品的一个分类 class BookOnline implements Book{ // 定义book类. |
关于结算,我们使用了独立的结算类,使用静态方法做计算。产品结算。注意参数类型。
代码如下 | 复制代码 |
<? |
下面的例子是实现。大家可以自己分析下。
代码如下 | 复制代码 |
<? $number = 10;
$user = new InnerUser("Tom"); |
相关文章
- 这篇文章主要介绍了Java8处理List的双层循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-19
jquery中常用的SET和GET$(”#msg”).html循环介绍
复制代码 代码如下: $(”#msg”).html(); //返回id为msg的元素节点的html内容。 $(”#msg”).html(”new content“); //将“new content” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content $(”...2013-10-13- 这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
浅谈Java8 的foreach跳出循环break/return
这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28mybatis-plus mapper中foreach循环操作代码详解(新增或修改)
这篇文章主要介绍了mybatis-plus mapper中foreach循环操作代码详解(新增或修改),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-17- 这篇文章主要介绍了C#中的基本循环:while循环、for循环和foreach循环,大家都知道循环结构可以简化程序编码,更好地实现理想的效果,并结合案例给大家讲解,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-11
- 这篇文章主要介绍了解决vue-router路由拦截造成死循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
- 这篇文章主要介绍了c# 循环语句的使用方法,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-06-25
- 这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
- 一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
- 这篇文章主要给大家介绍了关于JavaScript循环遍历的24个方法,文中对每种方法都给出了详细的实例代码,方便大家理解学习,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-09-15
- 这篇文章主要介绍了Java8之Stream流代替For循环操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-19
- session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
- 这篇文章主要给大家介绍了关于Javascript循环删除数组中元素的几种方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2017-05-22
- 这篇文章主要介绍了c#入门之循环语句使用详解,有for循环和do/while的示例,需要的朋友可以参考下...2020-06-25
- 这篇文章主要给大家介绍了关于如何检测JavaScript中死循环的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
- 这篇文章主要介绍了Python While循环语句实例演示及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-30
- 这篇文章主要介绍了解决vue中的无限循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27