php的控制语句知识大全
php的控制语句
1、IF语句
IF语句是多数语言中的一个重要特点,它根据条件执行程序段。PHP的IF语句类似于C:
if(expr)
statement
正如在表达式中所论述,expr被计算为它的真值。如果expr为TRUE,PHP执行相应语句,如果为FALSE则忽略它。
如果$a大于$b,下例将显示’aisbiggerthanb’:
if($a>$b)
print"aisbiggerthanb";
通常,你希望根据条件执行多于一条语句。当然,不需要给每条语句都加上IF判断。取而代之,可以把多条语句组成一个语句组。
If语句可以嵌套于其他IF语句中,使你能够灵活地有条件的执行程序的各个部分。
2、ELSE语句
通常你希望满足特定条件时执行一条语句,不满足条件是执行另一条语句。ELSE就是用来做这个的。ELSE扩展IF语句,在IF语句表达式为FALSE时执行另一条语句。例如,下面程序执行如果$a大于$b则显示’aisbiggerthanb’,否则显示\’aisNOTbiggerthanb’:
if($a>$b){
print"aisbiggerthanb";
else{
print"aisNOTbiggerthanb";
3、ELSEIF语句
ELSEIF,就象名字所示,是IF和ELSE的组合,类似于ELSE,它扩展IF语句在IF表达式为FALSE时执行其他的语句。但与ELSE不同,它只在ELSEIF表达式也为TRUE时执行其他语句。
可以在一条IF语句中使用多条ELSEIF语句。第一个ELSEIF表达式为TRUE的语句将被执行。在PHP3中,你也可以写成’elseif’(写成两个单词)和’elseif’(写成一个单词)效果一样。这只是写法上的细小差别(如果你熟悉C,它也是),结果是完全一样的。
ELSEIF语句仅在IF表达式和任何前面的ELSEIF表达式都为FALSE,且当前ELSEIF表达式为TRUE时执行。
下面是一个含有ELSEIF和ELSE的嵌套格式的IF语句:
if($a==5):
print"aequals5";
print"...";
elseif($a==6):
print"aequals6";
print"!!!";
else:
print"aisneither5nor6";
endif;
4、WHILE语句
WHILE循环是PHP3的一种简单的循环。象在C中一样。WHILE语句的基本格式是:
WHILE(expr)statement
WHILE语句的意思非常简单。它告诉PHP只要WHILE表达式为TRUE就重复执行嵌套的语句。每次循环开始时检查WHILE表达式的值,所以即使在嵌套语句内改变了它的值,本次执行也不会终止,而直到循环结束(每次PHP运行嵌套的语句称为一次循环)。类似于IF语句,你可以用大括号把一组语句括起来,在同一个WHILE循环中执行多条语句:
WHILE(expr):statement...ENDWHILE;
下面例子完全相同,都打出数字1到10:
/*example1*/
$i=1;
while($i<=10){
print$i++;/*theprintedvaluewouldbe$ibeforetheincrement(post-
increment)*/
/*example2*/
$i=1;
while($i<=10):
print$i;
$i++;
endwhile;
5、DO..WHILE语句
DO..WHILE非常类似于WHILE循环,只是它在每次循环结束时检查表达式是否为真,而不是在循环开始时。它和严格的WHILE循环的主要区别是DO..WHILE的第一次循环肯定要执行(真值表达式仅在循环结束时间检查),而不必执行严格的WHILE循环(每次循环开始时就检查真值表达式,如果在开始时就为FALSE,循环会立即终止执行).
DO..WHILE循环只有一种形式:
$i=0;
do{
print$i;
}while($i>0);
上面循环只执行一次,因为第一次循环后,当检查真值表达式时,它算出来是FALSE($i不大于0)循环执行终止。
6、FOR循环语句
FOR循环是PHP中最复杂的循环。象在C中一样。FOR循环的语法是:
FOR(expr1;expr2;expr3)statement
第一个表达式(expr1)在循环开始时无条件的计算(执行)。
每一次循环,表达式expr2都被计算。如果结果为TRUE,则循环和嵌套的语句继续执行。如果结果为FALSE,则整个循环结 束。
每次循环结束时,expr3被计算(执行).每一个表达式都可为空。expr2为空则循环的次数不定(PHP默认它为TRUE,象C一样)。除非你要通过一个条件的BREAK语句代替FOR的真值表达式来结束循环,否则不要这样。
考虑下面例子。它们都显示数字1到10:
/*example1*/
for($i=1;$i<=10;$i++){
print$i;
/*example2*/
for($i=1;;$i++){
if($i>10){
break;
print$i;
/*example3*/
$i=1;
for(;;){
if($i>10){
break;
print$i;
$i++;
当然,第一个例子显然是最好的,但借此你可以发现在FOR循环中很多场合可以使用空的表达式。
其他的语言有一条foreach语句用来遍历一个数组或哈希(hash)表。PHP使用while语句和list()、each()函数来达到这个功能。
7、SWITCH选择语句
SWITCH语句就象是对同一个表达式的一系列IF语句。在很多时侯,你想把同一个变量(或者表达式)和许多不同的值去比较,并根据不同的比较结果执行不同的程序段。这就是SWITCH语句的用处了。
下面两个例子通过不同的方法做同一件事,一个用一组IF语句,另外一个用SWITCH语句:
/*example1*/
if($i==0){
print"iequals0";
if($i==1){
print"iequals1";
if($i==2){
print"iequals2";
/*example2*/
switch($i){
case0:
print"iequals0";
break;
case1:
print"iequals1";
break;
case2:
print"iequals2";
break;
(二)、REQUIRE语句
REQUIRE语句用指定的文件代替自己,很象C中的预处理#include。
这意味着你不能为了每次调用该函数来包含不同文件的内容,而把require()语句放在一个循环结构,。要这么做,使用INCLUDE语句。
require(’header.inc’);
(三)、INCLUDE语句
INCLUDE语句包含指定的文件。
每次遇到INCLUDE是INCLUDE语句就包含指定的文件。所以你可以在一个循环结构中使用INCLUDE语句以包含一系列不同的文件。
$files=array(’first.inc’,’second.inc’,’third.inc’);
for($i=0;$i<count($files);$i++){
include($files[$i]);
(四)、函数
可以通过以下的语法定义函数:
functionfoo($arg_1,$arg_2,...,$arg_n){
echo"Examplefunction.\n";
return$retval;
函数中可以使用任何有效的PHP3代码,甚至是其他的函数或类的定义
1、函数返回值
函数可以通过可选的return语句返回值。返回值可以是任何类型,包括列表和对象。
functionmy_sqrt($num){
return$num*$num;
echomy_sqrt(4);//outputs’16’.
函数不能同时返回多个值,但可以通过返回列表的方法来实现:
functionfoo(){
returnarray(0,1,2);
list($zero,$one,$two)=foo();
2、参数
外部信息可以通过参数表来传入函数中;参数表就是一系列逗号分隔的变量和/或常量。
PHP3支持通过值形参数(默认),变量参数,和默认参数。不支持变长参数表,但可以用传送数组的方法来实现。
3、关联参数
默认情况函数参数是传值方式。如果你允许函数修改传入参数的值,你可以使用变量参数。
如果你希望函数的一个形式参数始终是变量参数,你可以在函数定义时给该形式参数加(&)前缀:
functionfoo(&$bar){
$bar.=’andsomethingextra.’;
$str=’Thisisastring,’;
foo($str);
echo$str;//outputs’Thisisastring,andsomethingextra.’
如果要传递一个可变参数给默认的函数(其形式参数不是变参方式),你可以在调用函数时给实际参数加(&)前缀:
functionfoo($bar){
$bar.=’andsomethingextra.’;
$str=’Thisisastring,’;
foo($str);
echo$str;//outputs’Thisisastring,’
foo(&$str);
echo$str;//outputs’Thisisastring,andsomethingextra.’
4、默认值
函数可以定义C++风格的默认值,如下:
functionmakecoffee($type="cappucino"){
echo"Makingacupof$type.\n";
echomakecoffee();
echomakecoffee("espresso");
上边这段代码的输出是:
Makingacupofcappucino.
Makingacupofespresso.
注意,当使用默认参数时,所有有默认值的.参数应在无默认值的参数的后边定义;否则,将不会按所想的那样工作。
5、CLASS(类)
类是一系列变量和函数的集合。类用以下语法定义:
<?php
classCart{
var$items;//Itemsinourshoppingcart
//Add$numarticlesof$artnrtothecart
functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
//Take$numarticlesof$artnroutofthecart
functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}else{
returnfalse;
?>
上面定义了一个叫Cart的类,其中包括一个关联数组和两个用来从cart中增加和删除项目的函数。
类是实际变量的原始模型。你要通过new操作符来建立一个所需类型的变量。
$cart=newCart;
$cart->add_item("10",1);
这建立起一个Cart类的对象$cart。该对象的函数add_item()被调用来给第10项加1。
类可以从其他的类扩充得到。扩充或派生出来的类拥有基类的所有变量和函数及你在扩充定义中所定义的东西。这要使用extends关键字。
classNamed_CartextendsCart{
var$owner;
functionset_owner($name){
$this->owner=$name;
这里定义了一个名为Named_Cart的类它继承了Cart类所有变量和函数并增加了一个变量$owner和一个函数set_owner()。你建立的named_cart类的变量现在就能设置carts的owner了。在named_cart变量中你仍然可以使用一般的cart函数:
$ncart=newNamed_Cart;//Createanamedcart
$ncart->set_owner("kris");//Namethatcart
print$ncart->owner;//printthecartownersname
$ncart->add_item("10",1);//(inheritedfunctionalityfromcart)
函数中的变量$this意思是当前的对象。你需要使用$this->something的形式来存取所有当前对象的变量或函数。
类中的构造器是你建立某种类的新变量时自动被调用的函数。类中和类名一样的函数就是构造器。
classAuto_CartextendsCart{
functionAuto_Cart(){
$this->add_item("10",1);
这里定义一个类Auto_Cart,它给Cart类加了一个每次new操作时设置项目10进行变量初始化的构造器。构造器也可以有参数,这些参数是可选的,这种特点也使得其十分有用。
classConstructor_Cart{
functionConstructor_Cart($item="10",$num=1){
$this->add_item($item,$num);
//Shopthesameoldboringstuff.
$default_cart=newConstructor_Cart;
//Shopforreal...
$different_cart=newConstructor_Cart("20",17);
徐娇假小子变身女神范儿
我记得当初看星爷的《长江七号》的时候,完全没有想到扮演星爷儿子的是个假小子。更没有想到的是这么多年过去了,当年的假小子已经变成了今天可人的萌少女。这两天徐娇在微博里晒出了一堆清纯制服装,真真儿让我看傻了眼
移动安全再现惊天危机 安全管家首家查杀
继安全管家云安全中心独家查杀4000余款“美图陷阱”与“幕后黑手”手机病毒后,安全管家再度首家查杀“惊天危机”病毒。“惊天危机”是目前感染用户最多,受感染文件最多的病毒。
据了解,“惊天危机”病毒感染的软件已达20000余款,预计几百万用户都受到了危害。并且该病毒入侵软件类别多,危害数量庞大。包括黄金矿工、单机斗地主、消灭星星等游戏类软件;WIFI密钥、来电通来电归属地等工具类软件及性感美女等壁纸类软件皆被感染。
“惊天危机”病毒的主要恶意行为为:在用户全然不知的情况下,已经在后台利用自有技术开始下载了大量的软件,下载软件后便在用户的通知栏弹出消息,用户轻轻一点即弹出安装。同时“惊天危机”还很隐蔽,普通用户无法直接查明是哪个软件在通知栏进行消息的推送,更可恨的是,推送的消息也不能如正常软件可直接进行清除。
经过安全管家云安全中心对“惊天危机”病毒的恶意特性进行快速提取和分析,目前安全管家已能精准拦截此类病毒,防止“惊天危机”出现。
(通知栏广告,点击即安装,且无法直接清除)
(安全管家独家查杀“惊天危机”病毒)
安全管家提醒用户,当发现通知栏有匿名信息或者未知的软件时,请及时进行手机的全盘查杀,防止一些手机病毒私自在后台进行恶意侵害,导致自己的流量和话费受损。
div.shared a,div.shared a:hover { text-decoration:none; }
新手机病毒感染70余款手游 窃取短信账号等隐私
手机病毒“GoYear”采用混淆+加密的方式,自动将手机进行ROOT并获得最高权限完全控制手机,窃取用户的通讯录、短信、帐号密码等隐私信息,在后台回传给黑客。同时还会进行流氓推广,自动在用户手机上下载应用程序,大量消耗手机流量。
最近几年,智能手机几乎成为人们手中不可或缺的设备,各种各样的手机游戏也填补了人们的空余时间,但越来越多的热门Android游戏成为恶意软件伪装、篡改的对象。近日,网秦发现新手机病毒“GoYear”,并发布安全预警提醒广大手机用户小心下载,谨防中毒。
伪装手机游戏的病毒“GoYear”
据了解,网秦此次发现的手机病毒“GoYear”感染范围巨大,目前该病毒已经伪装成70多个手机游戏网上进行传播,例如“多罗猫的疯狂史”、“赛车争霸”、“CS反恐”、“扫雷2012”等均被伪装。
网秦安全专家表示,手机病毒“GoYear”的感染范围还在进一步扩大,并且危害和隐蔽性极强。该病毒采用混淆+加密的方式,使得安全软件很难发现。不仅如此,该手机病毒还会自动将手机进行ROOT并获得最高权限完全控制手机。随后窃取用户的通讯录、短信、帐号密码等隐私信息,在后台回传给黑客。同时还会进行流氓推广,自动在用户手机上下载应用程序,大量消耗手机流量。由于获得了手机最高权限,会为用户带来更多安全风险。
手机游戏由于较快的更新速度,已经成为恶意软件主要的伪装对象,很多审核不严的应用商店则成为这种手机木马滋生的温床。但是一部分应用商店对安全审核机制不严谨,提供的软件种类繁多,质量良莠不齐,安全难以保证,使一些制毒者有机可乘。
据网秦最新发布的《2013年上半年全球手机安全报告》显示,46%的手机恶意软件是通过第三方应用商店和手机论坛传播的。
对于越来越多的恶意软件伪装成手机游戏,严重威胁用户手机安全的情况,建议手机用户尽量选择正规安全的应用市场下载,同时安装安全软件,及时监控恶意软件的过度权限要求和后台私自联网等恶意行为,阻止病毒恶意行为,保护手机安全。
国内网费被指是美国4倍韩国20倍 网速仅其一半
据中国之声《新闻晚高峰》报道,随着智能手机的普及,手机上网也成为一种必然。然而,让人尴尬的是,上网人数是在不断增加,可资费同时也在正向上升,调查显示,中国内地用户月均上网费用是美国4倍、韩国20多倍、我国香港地区的上百倍,网速却不及人家的一半。
北京的白领朱女士使用的是中国电信iPhone5和合约机。为了满足上网流量,朱女士除了定制使用的“商务领航套餐”外,自己每个月还要额外再购买500兆的流量包:
朱女士:现在上网比较多,微博、微信、看网页图片什么的,每月要用900兆流量,有的时候我都不够用。商务领航套餐再加上流量包就得小200块钱。
朱女士觉得,自己用的iPhone5算是比较新的机型,上网的银子花得像流水一样,但是网速并不给力:
朱女士:手机的硬件不错,所以感觉的网速非常一般,就是刷不出来,图片出来慢,这都是网速慢。我觉得起码得占一头吧,要么便宜些,要么提高服务,把网速变得很快。
朱女士的感受并非个案,尽管我国运营商推出了多种多样的上网资费套餐,但调查显示,我国内地用户月均上网费用是美国4倍、韩国20多倍、我国香港地区的上百倍,而网速却不及发达国家的一半。
朱女士:我有个同学也使用iPhone5,他在国外相对于我们来说就很便宜,而且就是速度特别快,他到国内都不适应,我觉得差距还是挺大的。
腾讯公司首席执行官马化腾曾说,很多网民对手机上网是月头像开闸,月尾省着用。这真实反映了普通百姓使用智能手机的心态。每月月底前收到流量即将用尽的短信通知时,正在上大学的张同学就会主动关掉上网功能。
张同学:月初的时候会用的多,到月底感觉流量就没有了,能不上网就不上了。
除了用不起的尴尬,一些智能手机上的自动更新程序,甚至恶意流量吸金软件,也使得网民对手机上网不得不提高防范。合肥市民卢璧今年就曾在短短三天时间内,手机自动上网流量超过了3000多兆,费用超过了一千块钱。电信公司工作人员回应称,如果不是手机被盗用,这笔费用需要用户自己来承担。
电信工作人员:我们从后台查了下,初步判断没有复制卡的嫌疑,从后台计费的话单来看,也属于正常,不可能会被盗用。
中国移动的客服人员同样表示,除了客户正常的手机上网应用外,一定要关注智能手机上的自动更新程序。如果客户使用流量超过预设套餐,将按照每兆一块钱的标准进行收费:
中国移动客服人员:根据使用情况来定的,或者看手机上面有没有自动联网的程序,或者软件会自动联网,导致走的流量比较多,自动更新数据,自动刷新数据的。
手机上网,低网速高网费,除了让网民很伤心外,还有哪些影响?未来,有可能网速提上去,而网费会降下来吗?
赛迪顾问通信产业研究中心副总经理耿严表示,运营商的垄断经营是本质问题:
耿严:他们三个毕竟是很垄断的企业,国外有很多运营商都是很市场化的行为,如果有竞争的话自然就会降下来,是三家的竞争,不是两家,还稍微好一点,有那么点余地,我觉得这是核心的问题。
同时,耿严认为,运营商此前在移动3G上的巨额投资没有收回,只有移动互联网用户的数量增加,在规模效应的作用下,才能降低整体运营成本。但现实的情况是,有7亿多客户的中国移动拥有全球最大的客户规模,但由于智能上网终端的比例并不高。
中国移动总裁李跃:智能终端在中国大陆的占比只有30%左右,我们还有非常非常广阔的市场前景。
此外,随着年内4G牌照的发放,运营商即将面临4G资金投入的压力。因此,耿严分析,只有维持现有的资费水平,从而支持运营商的投资规划,手机上网资费也就很难下调。不过,高资费、低网速的现状肯定不利于我国信息领域建设和消费。
耿严:今年咱们国家一直在推信息消费,建立在告诉互联网络上才有未来新的商业模式的体现,我觉得像这种现象长期下去,不管是从信息消费领域还是信息化的推进还有各方面的进程来讲是不利的。
新版Chrome将加入双指缩放、滑动导航等触屏功能
北京时间8月6日消息,据国外媒体报道,谷歌正有计划地为Chrome浏览器添加更多触摸优化的功能。
在最新发布的Canarybuild分支里,谷歌加入了一个通过滑动进行网页导航的功能。也就是说用户通过左右滑动,就能查看页面浏览的记录。Windows8平台上的IE10浏览器也具备同样的功能。
“双指缩放”是另一项新加入Chrome的功能,用户可以通过双指的移动来放大缩小浏览的页面。
另外,谷歌还为Windows8版Chrome准备了虚拟键盘,当用户点击地址栏或者文本框时,虚拟键盘就跳出来了。
触摸屏已成为现代计算设备必备的特征之一,谷歌有ChromebookPixel,市面上越来越多的Windows8电脑也采用触摸屏设计,它们都需要为触屏优化的Chrome。
去年谷歌发布了针对Windows8的Metro版Chrome浏览器,但更多的是压缩版而不是对触屏友好。而现在加入测试版的这些功能,肯定能够优化用户在触屏设备上的使用体验。
【php的控制语句知识大全】相关文章: