php的控制語句知識大全

來源:文萃谷 2.85W
  php的控制語句

1、IF語句

php的控制語句知識大全

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):HILE;

下面例子完全相同,都打出數字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、E語句

E非常類似於WHILE循環,只是它在每次循環結束時檢查表達式是否為真,而不是在循環開始時。它和嚴格的WHILE循環的主要區別是E的第一次循環肯定要執行(真值表達式僅在循環結束時間檢查),而不必執行嚴格的WHILE循環(每次循環開始時就檢查真值表達式,如果在開始時就為FALSE,循環會立即終止執行).

E循環只有一種形式:

$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(’’);

(三)、INCLUDE語句

INCLUDE語句包含指定的文件。

每次遇到INCLUDE是INCLUDE語句就包含指定的文件。所以你可以在一個循環結構中使用INCLUDE語句以包含一系列不同的文件。

$files=array(’’,’’,’’);

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密鑰、來電通來電歸屬地等工具類軟件及性感美女等壁紙類軟件皆被感染。

“驚天危機”病毒的主要惡意行為為:在用户全然不知的情況下,已經在後台利用自有技術開始下載了大量的軟件,下載軟件後便在用户的通知欄彈出消息,用户輕輕一點即彈出安裝。同時“驚天危機”還很隱蔽,普通用户無法直接查明是哪個軟件在通知欄進行消息的推送,更可恨的是,推送的消息也不能如正常軟件可直接進行清除。

經過安全管家雲安全中心對“驚天危機”病毒的惡意特性進行快速提取和分析,目前安全管家已能精準攔截此類病毒,防止“驚天危機”出現。

(通知欄廣告,點擊即安裝,且無法直接清除)

(安全管家獨家查殺“驚天危機”病毒)

安全管家提醒用户,當發現通知欄有匿名信息或者未知的軟件時,請及時進行手機的全盤查殺,防止一些手機病毒私自在後台進行惡意侵害,導致自己的流量和話費受損。

ed a,ed 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瀏覽器,但更多的是壓縮版而不是對觸屏友好。而現在加入測試版的這些功能,肯定能夠優化用户在觸屏設備上的使用體驗。

熱門標籤