您好,登錄后才能下訂單哦!
1.任何 PHP 腳本都是由一系列語句構成的。一條語句可以是一個賦值語句,一個函數調用,一個循環,一個條件語句或者甚至是一個什么也不做的語句(空語句)。語句通常以分號結束。此外,還可以用花括號將一組語句封裝成一個語句組。語句組本身可以當作是一行語句。本章介紹了各種語句類型。
2.if
注意:不僅是INT,FLOAT,連字母字符也可以進行大小值的比較
echo ‘x’>‘a’;
注意:花括號可省略但不建議。
3.else
在IF條件相反的情況下才會執行
4.elseif
作為IF和ELSE之間的補充假設
5.替代語法
PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;
如:if else可以寫作如下形式
if(expr):
statement;
else:
statement;
endif;
6.while
只要expr為真就一直執行。
擴展:
通過each(取得數組上一個(如果是第一次則索引為0)元素,并將指針指向下一個元素)和list(將數組中的值賦與給變量)加上while循環數組
<?php
$a=['a','b'];
while(list($k,$v)=each($a))
{
echo $k."=>".$v;
}
?>
7.do while
和while大體一致,不同的是,它至少會執行一次do里的statement
8.for
比較特殊的是可以省略一部分條件語句,而在statement里控制
如:
<?php
for($i=0;;$i++)
{
if($i>0)
{
break;
}
}
?>
或者
<?php
$i = 0;
for(;;)
{
if($i>10)
{
break;
}
echo $i;
$i++;
}
?>
或者
<?php
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $j, $i++);
?>
注意:expr可以優化的,如增加一個中間變量替換在循環中需要不停重復計算的變量。
9.foreach
可以遍歷數組,也可以遍歷對象。
注意:$k=$v 在foreach后 $v仍然存在,所以需要unset掉$v
注意:foreach不能用@隱藏錯誤信息
小技巧:
<?php
$arr = [1,2,3,4];
foreach($arr as $k=>&$v)
{
$v = $v*2;
}
?>使用引用在遍歷的時候修改原數組數據。
5.5中可以使用list取出二維數組(僅在5.5里有效。。)
<?php
$a = [[1,2],[3,4]];
foreach($a as list($y,$z))
{
echo $y."=>".$z.PHP_EOL;
}
?>
//將輸出1=>2\n3=>4
10.break
跳出當前循環
后加INT可設置跳出幾層循環,但INT不可為變量,且必須大于0。
11.continue
跳過當前循環余下的代碼并在下一次循環條件為真的時候執行下一個循環。
與break一樣,后加INT可設置跳出幾層循環,但INT不可為變量,且必須大于0。
提示:continue可用于switch,但效果和break相同。
12.declare
最簡單的用法就是監控代碼執行
如:
<?php
/*
* ticks表示zend引擎每執行ticks次語句,就檢查注冊進tick_function的函數
* 所以本例為每執行一次,就運行一次check_timeout
* 本腳本如果執行時間超過$timeout,就exit
* */
declare(ticks=1);
$stime = time();
function check_timeout()
{
global $stime;
$timeout = 1;
$t =time()-$stime;
if($t>$timeout):
exit("over {$timeout} seconds, time out!".PHP_EOL);
endif;
echo "running over {$t}!".PHP_EOL;
}
register_tick_function("check_timeout");
while(1)
{
echo "go".PHP_EOL;
}
?>
其他更深的用法再說吧,聽大神說這個是PHP程序員裝逼時用的。
13.return
如果在一個函數中調用 return 語句,將立即結束此函數的執行并將它的參數作為函數的值返回。return 也會終止 eval() 語句或者腳本文件的執行。
注意:如何在全局,則中止后面的代碼。如果是被嵌套的文件里的,則僅中止被嵌套文件里的后面的代碼,而不影響嵌套的文件。
注意:如果當前腳本是被 include 的,則 return 的值會被當作 include 調用的返回值。
注意:return是語言結構而非函數,所以后面不要加括號,容易錯誤。
14.require
和include幾乎完全一樣,不同的是發生錯誤時警告級別不同,require是COMPILE_ERROR。
因為是語言結構,所以我個人的喜好是不添加括號。
15.include
包含并運行指定文件,產生錯誤的警告級別為E_WARNING。
與requirce相同的是查找的文件路徑順序:
1.如果是絕對路徑,則從絕對路徑查找;
2.如果僅是文件名,先從include_path(php.ini里設置)查找,如果仍未找到,則才在腳本文件的目錄和當前工作目錄下查找。
注意:如果定義了絕對路徑(win下 E:\或 linux下 etc/path)或相對路徑(./或../),include_path會被忽略。
包含后,包含的文件在被包含文件的行下將繼承被包含文件的變量及函數。
如果包含文件是在函數內部,則變量作用域僅在函數內部(魔術常量除外)。
在LINUX下,如果PHP配置開啟了:allow_url_open,則可以遠程include PHP文件。
16.require_once
在包含時會檢查是否被包含過,如果是則不會被再次包含,其他用法與require一模一樣。參見inlcude_once
17.include_once
可以用于在腳本執行期間同一個文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變量重新賦值等問題。
18.goto
可以用來跳轉到程序中的另一個位置,該位置可以用目標名加上冒號來標記,該位置只能位于同一個文件和作用域(也就是說,函數或類方法內的goto無法跳出該函數和類方法),{也無法跳入任何循環或SWITCH結構中,但可以跳出循環或SWITCH}(重點記憶),可以用于代替多層BREAK。
簡單例子:
<?php
goto show;
echo "world!";
show:
echo "hello";
?>
最后作個記號:http://www.nowamagic.net/librarys/veda/detail/102 這里講得PHP運行的流程和PHP整體結構,非常不錯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。