引言
PHP的教程我還是按照所用即所得的方式來(lái)寫吧,本身對(duì)PHP的認(rèn)識(shí)也不系統(tǒng),因此杉辙,摸著石頭過(guò)河,披荊斬棘吧~
目錄
- error_reporting() 函數(shù)
- ini_set("display_errors","On")
- php include,require,include_once,require_once 的區(qū)別
- PHP 語(yǔ)法
- PHP 變量
- PHP 變量作用域
- PHP 5 echo 和 print 語(yǔ)句
- PHP 數(shù)據(jù)類型
- PHP 字符串函數(shù)
- PHP 常量
- PHP 運(yùn)算符
- PHP if...else...elseif 語(yǔ)句
- PHP for 循環(huán)
- PHP 函數(shù)
- PHP 數(shù)組
- PHP 數(shù)組排序
- PHP 全局變量 - 超全局變量
PHP error_reporting() 函數(shù)
規(guī)定不同的錯(cuò)誤級(jí)別報(bào)告:
<?php
// 關(guān)閉錯(cuò)誤報(bào)告
error_reporting(0);
// 報(bào)告 runtime 錯(cuò)誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// 報(bào)告所有錯(cuò)誤
error_reporting(E_ALL);
// 等同 error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);
// 報(bào)告 E_NOTICE 之外的所有錯(cuò)誤
error_reporting(E_ALL & ~E_NOTICE);
?>
定義和用法
error_reporting() 函數(shù)規(guī)定你應(yīng)該報(bào)告何種 PHP 錯(cuò)誤班缰。
error_reporting() 函數(shù)能夠在運(yùn)行時(shí)設(shè)置 error_reporting 指令贤壁。
PHP 有諸多錯(cuò)誤級(jí)別,使用該函數(shù)可以設(shè)置在腳本運(yùn)行時(shí)的級(jí)別埠忘。如果沒有設(shè)置可選參數(shù) level脾拆,error_reporting() 僅會(huì)返回當(dāng)前的錯(cuò)誤報(bào)告級(jí)別馒索。
語(yǔ)法
error_reporting(level);
level :可選。規(guī)定新的 error_reporting 級(jí)別名船〈律希可以是一個(gè)位掩碼也可以是一個(gè)已命名的常量。
注釋:強(qiáng)烈建議使用已命名的常量渠驼,以確保兼容將來(lái)的版本蜈块。由于錯(cuò)誤級(jí)別的添加、整數(shù)取值范圍的增加迷扇,較久的基于整數(shù)的錯(cuò)誤級(jí)別不會(huì)總是和預(yù)期的表現(xiàn)一致百揭。
可用的錯(cuò)誤級(jí)別常量及其實(shí)際含義描述在了 predefined constants 中。
如果參數(shù) level 未指定蜓席,當(dāng)前報(bào)錯(cuò)級(jí)別將被返回器一。下面幾項(xiàng)是 level 可能的值:
值 | 常量 | 描述 |
---|---|---|
1 | E_ERROR | 致命的運(yùn)行錯(cuò)誤。錯(cuò)誤無(wú)法恢復(fù)厨内,暫停執(zhí)行腳本祈秕。 |
2 | E_WARNING | 運(yùn)行時(shí)警告(非致命性錯(cuò)誤)。非致命的運(yùn)行錯(cuò)誤雏胃,腳本執(zhí)行不會(huì)停止请毛。 |
4 | E_PARSE | 編譯時(shí)解析錯(cuò)誤。解析錯(cuò)誤只由分析器產(chǎn)生丑掺。 |
8 | E_NOTICE | 運(yùn)行時(shí)提醒(這些經(jīng)常是你代碼中的bug引起的获印,也可能是有意的行為造成的。) |
16 | E_CORE_ERROR | PHP啟動(dòng)時(shí)初始化過(guò)程中的致命錯(cuò)誤街州。 |
32 | E_CORE_WARNING | PHP啟動(dòng)時(shí)初始化過(guò)程中的警告(非致命性錯(cuò))兼丰。 |
64 | E_COMPILE_ERROR | 編譯時(shí)致命性錯(cuò)。這就像由Zend腳本引擎生成了一個(gè)E_ERROR唆缴。 |
128 | E_COMPILE_WARNING | 編譯時(shí)警告(非致命性錯(cuò))鳍征。這就像由Zend腳本引擎生成了一個(gè)E_WARNING警告。 |
256 | E_USER_ERROR | 用戶自定義的錯(cuò)誤消息面徽。這就像由使用PHP函數(shù)trigger_error(程序員設(shè)置E_ERROR) |
512 | E_USER_WARNING | 用戶自定義的警告消息艳丛。這就像由使用PHP函數(shù)trigger_error(程序員設(shè)定的一個(gè)E_WARNING警告) |
1024 | E_USER_NOTICE | 用戶自定義的提醒消息。這就像一個(gè)由使用PHP函數(shù)trigger_error(程序員一個(gè)E_NOTICE集) |
2048 | E_STRICT | 編碼標(biāo)準(zhǔn)化警告趟紊。允許PHP建議如何修改代碼以確保最佳的互操作性向前兼容性氮双。 |
4096 | E_RECOVERABLE_ERROR | 開捕致命錯(cuò)誤。這就像一個(gè)E_ERROR霎匈,但可以通過(guò)用戶定義的處理捕獲(又見set_error_handler()) |
8191 | E_ALL | 所有的錯(cuò)誤和警告(不包括 E_STRICT) (E_STRICT will be part of E_ALL as of PHP 6.0) |
ini_set("display_errors","On")
在用php做網(wǎng)站開發(fā)的時(shí)候 戴差, 為防止用戶看到錯(cuò)誤信息,而出現(xiàn)不友好的界面铛嘱。故一般性會(huì)在php.ini
里設(shè)置:
display_errors = Off;
不過(guò)在開發(fā)的時(shí)候暖释,我們有時(shí)候需要打開錯(cuò)誤信息袭厂。這時(shí)候,可以在php文件里設(shè)置:
ini_set("display_errors","On");
error_reporting(E_ALL);
不過(guò)有時(shí)候我們即使這樣設(shè)置了球匕,還是無(wú)法顯示php里的語(yǔ)法錯(cuò)誤纹磺。
這是由于php文件的語(yǔ)法錯(cuò)誤導(dǎo)致該文件根本沒有被執(zhí)行,所以當(dāng)然不會(huì)顯示錯(cuò)誤信息
解決方法:
假設(shè)這個(gè)php里有語(yǔ)法錯(cuò)誤
你可以新建一個(gè)test.php亮曹,然后在該php里如下編輯:
ini_set("display_errors","On");
error_reporting(E_ALL);
include("目標(biāo)文件");
這樣橄杨,當(dāng)你在運(yùn)行test.php的時(shí)候 程序就會(huì)報(bào)其中的錯(cuò)誤語(yǔ)法.
error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的區(qū)別?
后者的權(quán)限大于前者,后者是OFF的話乾忱,前者就算是E-ALL也沒用讥珍。
PHP include,require,include_once,require_once 的區(qū)別
include()
,require()
,include_once()
,require_once()
作用都是包含并運(yùn)行指定文件,但是使用場(chǎng)景又有很大區(qū)別窄瘟。
1.include()和require()的區(qū)別:
include()引入文件時(shí)衷佃,如果遇到錯(cuò)誤會(huì)提示錯(cuò)誤并繼續(xù)執(zhí)行;require()引入文件遇到錯(cuò)誤時(shí)也提示錯(cuò)誤但會(huì)終止程序的運(yùn)行蹄葱。
require()語(yǔ)句一般放在php腳本頁(yè)面的最前面氏义,php在執(zhí)行前,就先讀入require()引入的文件图云,文件的內(nèi)容會(huì)變成此腳本的一部分惯悠,一旦出現(xiàn)錯(cuò)誤,則立即退出程序竣况。
include()語(yǔ)句一般在用到時(shí)才引入克婶,所以通常是放在流程控制的處理區(qū)段中,php腳本在執(zhí)行到它時(shí)丹泉,才會(huì)將文件包含進(jìn)來(lái)情萤。
即require()是預(yù)加載機(jī)制,位置在腳本最前面摹恨,一開始就引入所有可能用到的文件筋岛;include()是即用即加載,位置靈活晒哄。
2.include()睁宰、require()和include_once()、require_once()的區(qū)別:
include()寝凌、require()執(zhí)行即包含文件柒傻,不會(huì)對(duì)引入的文件進(jìn)行比較判斷,可能會(huì)出現(xiàn)重復(fù)包含的情況较木;而include_once()诅愚、require_once()在包含時(shí)會(huì)先判斷文件是否已經(jīng)包含過(guò)了,如果已包含,則不再包含文件违孝,這樣的引入文件方式即可以節(jié)省資源,又可避免重復(fù)定義的錯(cuò)誤泳赋。
PHP 語(yǔ)法
PHP 腳本在服務(wù)器上執(zhí)行雌桑,然后向?yàn)g覽器發(fā)送回純 HTML 結(jié)果。
PHP 腳本可放置于文檔中的任何位置祖今。
PHP 腳本以 <?php 開頭校坑,以 ?> 結(jié)尾:
<?php
// 此處是 PHP 代碼
?>
PHP 文件的默認(rèn)文件擴(kuò)展名是 ".php"。
PHP 文件通常包含 HTML 標(biāo)簽以及一些 PHP 腳本代碼千诬。
下面的例子是一個(gè)簡(jiǎn)單的 PHP 文件耍目,其中包含了使用內(nèi)建 PHP 函數(shù) "echo" 在網(wǎng)頁(yè)上輸出文本 "Hello World!" 的一段 PHP 腳本:
實(shí)例
<!DOCTYPE html>
<html>
<body>
<h1>我的第一張 PHP 頁(yè)面</h1>
<?php
echo "Hello World!";
?>
</body>
</html>
注釋:PHP 語(yǔ)句以分號(hào)結(jié)尾(;)。PHP 代碼塊的關(guān)閉標(biāo)簽也會(huì)自動(dòng)表明分號(hào)(因此在 PHP 代碼塊的最后一行不必使用分號(hào))徐绑。
PHP 支持三種注釋:
實(shí)例
<!DOCTYPE html>
<html>
<body>
<?php
// 這是單行注釋
# 這也是單行注釋
/*
這是多行注釋塊
它橫跨了
多行
*/
?>
</body>
</html>
PHP 大小寫敏感
在 PHP 中邪驮,所有用戶定義的函數(shù)、類和關(guān)鍵詞(例如 if傲茄、else毅访、echo 等等)都對(duì)大小寫不敏感。
在下面的例子中盘榨,所有這三條 echo 語(yǔ)句都是合法的(等價(jià)):
<!DOCTYPE html>
<html>
<body>
<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>
</body>
</html>
不過(guò)在 PHP 中喻粹,所有變量都對(duì)大小寫敏感。
在下面的例子中草巡,只有第一條語(yǔ)句會(huì)顯示 $color 變量的值(這是因?yàn)?$color守呜、$COLOR 以及 $coLOR 被視作三個(gè)不同的變量):
<!DOCTYPE html>
<html>
<body>
<?php
$color="red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
echo "My boat is " . $coLOR . "<br>";
?>
</body>
</html>
PHP 變量
變量是存儲(chǔ)信息的容器:
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
注釋:請(qǐng)把變量視為存儲(chǔ)數(shù)據(jù)的容器。
PHP 變量命名規(guī)則:
- 變量以 $ 符號(hào)開頭山憨,其后是變量的名稱
- 變量名稱必須以字母或下劃線開頭
- 變量名稱不能以數(shù)字開頭
- 變量名稱只能包含字母數(shù)字字符和下劃線(A-z查乒、0-9 以及 _)
- 變量名稱對(duì)大小寫敏感($y 與 $Y 是兩個(gè)不同的變量)
PHP 沒有創(chuàng)建變量的命令。
變量會(huì)在首次為其賦值時(shí)被創(chuàng)建:
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
注釋:如果您為變量賦的值是文本萍歉,請(qǐng)用引號(hào)包圍該值侣颂。
PHP 變量作用域
在 PHP 中,可以在腳本的任意位置對(duì)變量進(jìn)行聲明枪孩。
變量的作用域指的是變量能夠被引用/使用的那部分腳本憔晒。
PHP 有三種不同的變量作用域:
- local(局部)
- global(全局)
- static(靜態(tài))
Local 和 Global 作用域
函數(shù)之外聲明的變量擁有 Global 作用域,只能在函數(shù)以外進(jìn)行訪問(wèn)蔑舞。
函數(shù)內(nèi)部聲明的變量擁有 LOCAL 作用域拒担,只能在函數(shù)內(nèi)部進(jìn)行訪問(wèn)。
下面的例子測(cè)試了帶有局部和全局作用域的變量:
<?php
$x=5; // 全局作用域
function myTest() {
$y=10; // 局部作用域
echo "<p>測(cè)試函數(shù)內(nèi)部的變量:</p>";
echo "變量 x 是:$x";
echo "<br>";
echo "變量 y 是:$y";
}
myTest();
echo "<p>測(cè)試函數(shù)之外的變量:</p>";
echo "變量 x 是:$x";
echo "<br>";
echo "變量 y 是:$y";
?>
在上例中攻询,有兩個(gè)變量 $x 和 $y从撼,以及一個(gè)函數(shù) myTest()。$x 是全局變量钧栖,因?yàn)樗窃诤瘮?shù)之外聲明的低零,而 $y 是局部變量婆翔,因?yàn)樗窃诤瘮?shù)內(nèi)聲明的。
如果我們?cè)?myTest() 函數(shù)內(nèi)部輸出兩個(gè)變量的值掏婶,$y 會(huì)輸出在本地聲明的值啃奴,但是無(wú)法 $x 的值,因?yàn)樗诤瘮?shù)之外創(chuàng)建雄妥。
然后最蕾,如果在 myTest() 函數(shù)之外輸出兩個(gè)變量的值,那么會(huì)輸出 $x 的值老厌,但是不會(huì)輸出 $y 的值瘟则,因?yàn)樗蔷植孔兞浚⑶以?myTest() 內(nèi)部創(chuàng)建枝秤。
注釋:您可以在不同的函數(shù)中創(chuàng)建名稱相同的局部變量醋拧,因?yàn)榫植孔兞恐荒鼙辉谄渲袆?chuàng)建它的函數(shù)識(shí)別秀姐。
PHP global 關(guān)鍵詞
global 關(guān)鍵詞用于訪問(wèn)函數(shù)內(nèi)的全局變量契吉。
要做到這一點(diǎn)傅瞻,請(qǐng)?jiān)冢ê瘮?shù)內(nèi)部)變量前面使用 global 關(guān)鍵詞:
<?php
$x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 輸出 15
?>
PHP 同時(shí)在名為 $GLOBALS[index] 的數(shù)組中存儲(chǔ)了所有的全局變量泊碑。下標(biāo)存有變量名腊瑟。這個(gè)數(shù)組在函數(shù)內(nèi)也可以訪問(wèn)娘锁,并能夠用于直接更新全局變量比肄。
上面的例子可以這樣重寫:
<?php
$x=5;
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; // 輸出 15
?>
PHP static 關(guān)鍵詞
通常忿磅,當(dāng)函數(shù)完成/執(zhí)行后痊焊,會(huì)刪除所有變量盏袄。不過(guò),有時(shí)我需要不刪除某個(gè)局部變量薄啥。實(shí)現(xiàn)這一點(diǎn)需要更進(jìn)一步的工作辕羽。
要完成這一點(diǎn),請(qǐng)?jiān)谀状温暶髯兞繒r(shí)使用 static 關(guān)鍵詞:
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
PHP 5 echo 和 print 語(yǔ)句
在 PHP 中垄惧,有兩種基本的輸出方法:echo 和 print刁愿。
echo 和 print 之間的差異:
- echo - 能夠輸出一個(gè)以上的字符串
- print - 只能輸出一個(gè)字符串,并始終返回 1
提示:echo 比 print 稍快到逊,因?yàn)樗环祷厝魏沃怠?/p>
echo 是一個(gè)語(yǔ)言結(jié)構(gòu)铣口,有無(wú)括號(hào)均可使用:echo 或 echo()。
顯示字符串
下面的例子展示如何用 echo 命令來(lái)顯示不同的字符串(同時(shí)請(qǐng)注意字符串中能包含 HTML 標(biāo)記):
<?php
echo "<h2>PHP is fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This", " string", " was", " made", " with multiple parameters.";
?>
下面的例子展示如何用 echo 命令來(lái)顯示字符串和變量:
<?php
$txt1="Learn PHP";
$txt2="W3School.com.cn";
$cars=array("Volvo","BMW","SAAB");
echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
?>
print 也是語(yǔ)言結(jié)構(gòu)觉壶,有無(wú)括號(hào)均可使用:print 或 print()脑题。
顯示字符串
下面的例子展示如何用 print 命令來(lái)顯示不同的字符串(同時(shí)請(qǐng)注意字符串中能包含 HTML 標(biāo)記):
<?php
print "<h2>PHP is fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>
PHP 數(shù)據(jù)類型
字符串、整數(shù)铜靶、浮點(diǎn)數(shù)叔遂、邏輯、數(shù)組、對(duì)象已艰、NULL痊末。
PHP 字符串
字符串是字符序列,比如 "Hello world!"哩掺。
字符串可以是引號(hào)內(nèi)的任何文本舌胶。您可以使用單引號(hào)或雙引號(hào):
<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>
PHP 對(duì)象
對(duì)象是存儲(chǔ)數(shù)據(jù)和有關(guān)如何處理數(shù)據(jù)的信息的數(shù)據(jù)類型。
在 PHP 中疮丛,必須明確地聲明對(duì)象。
首先我們必須聲明對(duì)象的類辆它。對(duì)此誊薄,我們使用 class 關(guān)鍵詞。類是包含屬性和方法的結(jié)構(gòu)锰茉。
然后我們?cè)趯?duì)象類中定義數(shù)據(jù)類型呢蔫,然后在該類的實(shí)例中使用此數(shù)據(jù)類型:
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
PHP NULL 值
特殊的 NULL 值表示變量無(wú)值。NULL 是數(shù)據(jù)類型 NULL 唯一可能的值飒筑。
NULL 值標(biāo)示變量是否為空片吊。也用于區(qū)分空字符串與空值數(shù)據(jù)庫(kù)。
可以通過(guò)把值設(shè)置為 NULL协屡,將變量清空:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
PHP 字符串函數(shù)
字符串是字符序列俏脊,比如 "Hello world!"。
PHP strlen() 函數(shù)
strlen() 函數(shù)返回字符串的長(zhǎng)度肤晓,以字符計(jì)爷贫。
下例返回字符串 "Hello world!" 的長(zhǎng)度:
<?php
echo strlen("Hello world!");
?>
PHP strpos() 函數(shù)
strpos() 函數(shù)用于檢索字符串內(nèi)指定的字符或文本。
如果找到匹配补憾,則會(huì)返回首個(gè)匹配的字符位置漫萄。如果未找到匹配,則將返回 FALSE盈匾。
下例檢索字符串 "Hello world!" 中的文本 "world":
<?php
echo strpos("Hello world!","world");
?>
PHP 常量
常量類似變量腾务,但是常量一旦被定義就無(wú)法更改或撤銷定義。
常量是單個(gè)值的標(biāo)識(shí)符(名稱)削饵。在腳本中無(wú)法改變?cè)撝怠?br> 有效的常量名以字符或下劃線開頭(常量名稱前面沒有 $ 符號(hào))岩瘦。
注釋:與變量不同,常量貫穿整個(gè)腳本是自動(dòng)全局的葵孤。
如需設(shè)置常量担钮,請(qǐng)使用 define()
函數(shù) - 它使用三個(gè)參數(shù):
首個(gè)參數(shù)定義常量的名稱
第二個(gè)參數(shù)定義常量的值
可選的第三個(gè)參數(shù)規(guī)定常量名是否對(duì)大小寫不敏感。默認(rèn)是 false尤仍。
下例創(chuàng)建了一個(gè)對(duì)大小寫敏感的常量箫津,值為 "Welcome to W3School.com.cn!":
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>
下例創(chuàng)建了一個(gè)對(duì)大小寫不敏感的常量,值為 "Welcome to W3School.com.cn!":
<?php
define("GREETING", "Welcome to W3School.com.cn!", true);
echo greeting;
?>
PHP 運(yùn)算符
PHP 算數(shù)運(yùn)算符
<?php
$x=10;
$y=6;
echo ($x + $y); // 輸出 16
echo ($x - $y); // 輸出 4
echo ($x * $y); // 輸出 60
echo ($x / $y); // 輸出 1.6666666666667
echo ($x % $y); // 輸出 4
?>
PHP 賦值運(yùn)算符
PHP 賦值運(yùn)算符用于向變量寫值。
PHP 中基礎(chǔ)的賦值運(yùn)算符是 "="苏遥。這意味著右側(cè)賦值表達(dá)式會(huì)為左側(cè)運(yùn)算數(shù)設(shè)置值饼拍。
<?php
$x=10;
echo $x; // 輸出 10
$y=20;
$y += 100;
echo $y; // 輸出 120
$z=50;
$z -= 25;
echo $z; // 輸出 25
$i=5;
$i *= 6;
echo $i; // 輸出 30
$j=10;
$j /= 5;
echo $j; // 輸出 2
$k=15;
$k %= 4;
echo $k; // 輸出 3
?>
PHP 字符串運(yùn)算符
. 串接
.= 串接賦值
<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 輸出 Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 輸出 Hello world!
?>
PHP 遞增/遞減運(yùn)算符
<?php
$x=10;
echo ++$x; // 輸出 11
$y=10;
echo $y++; // 輸出 10
$z=5;
echo --$z; // 輸出 4
$i=5;
echo $i--; // 輸出 5
?>
PHP 比較運(yùn)算符
PHP 比較運(yùn)算符用于比較兩個(gè)值(數(shù)字或字符串):
<!DOCTYPE html>
<html>
<body>
<?php
$x=100;
$y="100";
var_dump($x == $y); // 因?yàn)橹迪嗟龋祷?true
echo "<br>";
var_dump($x === $y); // 因?yàn)轭愋筒幌嗟忍锾浚祷?false
echo "<br>";
var_dump($x != $y); // 因?yàn)橹迪嗟仁Τ祷?false
echo "<br>";
var_dump($x !== $y); // 因?yàn)橹挡幌嗟龋祷?true
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b);
echo "<br>";
var_dump($a < $b);
?>
</body>
</html>
PHP 邏輯運(yùn)算符
運(yùn)算符 | 名稱 | 例子 | 結(jié)果 |
---|---|---|---|
and | 與 | $x and $y | 如果 $x 和 $y 都為 true教硫,則返回 true叨吮。 |
or | 或 | $x or $y | 如果 $x 和 $y 至少有一個(gè)為 true,則返回 true瞬矩。 |
xor | 異或 | $x xor $y | 如果 $x 和 $y 有且僅有一個(gè)為 true茶鉴,則返回 true。 |
&& | 與 | $x && $y | 如果 $x 和 $y 都為 true景用,則返回 true涵叮。 |
|| | 或 | $x || $y | 如果 $x 和 $y 至少有一個(gè)為 true,則返回 true伞插。 |
! | 非 | !$x | 如果 $x 不為 true割粮,則返回 true。 |
PHP 數(shù)組運(yùn)算符
運(yùn)算符 | 名稱 | 例子 | 結(jié)果 |
---|---|---|---|
+ | 聯(lián)合 | $x + $y | $x 和 $y 的聯(lián)合(但不覆蓋重復(fù)的鍵) |
== | 相等 | $x == $y | 如果 $x 和 $y 擁有相同的鍵/值對(duì)媚污,則返回 true舀瓢。 |
=== | 全等 | $x === $y | 如果 $x 和 $y 擁有相同的鍵/值對(duì),且順序相同類型相同杠步,則返回 true氢伟。 |
!= | 不相等 | $x != $y | 如果 $x 不等于 $y,則返回 true幽歼。 |
<> | 不相等 | $x <> $y | 如果 $x 不等于 $y朵锣,則返回 true。 |
!== | 不全等 | $x !== $y | 如果 $x 與 $y 完全不同甸私,則返回 true诚些。 |
<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 與 $y 的聯(lián)合
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
PHP if...else...elseif 語(yǔ)句
條件語(yǔ)句用于基于不同條件執(zhí)行不同的動(dòng)作
PHP 條件語(yǔ)句
在您編寫代碼時(shí),經(jīng)常會(huì)希望為不同的決定執(zhí)行不同的動(dòng)作皇型。您可以在代碼中使用條件語(yǔ)句來(lái)實(shí)現(xiàn)這一點(diǎn)诬烹。
在 PHP 中,我們可以使用以下條件語(yǔ)句:
- if 語(yǔ)句 - 如果指定條件為真弃鸦,則執(zhí)行代碼
- if...else 語(yǔ)句 - 如果條件為 true绞吁,則執(zhí)行代碼;如果條件為 false唬格,則執(zhí)行另一端代碼
- if...elseif....else 語(yǔ)句 - 選擇若干段代碼塊之一來(lái)執(zhí)行
- switch 語(yǔ)句 - 語(yǔ)句多個(gè)代碼塊之一來(lái)執(zhí)行
下例將輸出 "Have a good morning!"家破,如果當(dāng)前時(shí)間 (HOUR) 小于 10颜说,如果當(dāng)前時(shí)間小于 20,則輸出 "Have a good day!"汰聋。否則將輸出 "Have a good night!":
<?php
$t=date("H");
if ($t<"10") {
echo "Have a good morning!";
} elseif ($t<"20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
Switch 語(yǔ)句
如果您希望有選擇地執(zhí)行若干代碼塊之一门粪,請(qǐng)使用 Switch 語(yǔ)句。
使用 Switch 語(yǔ)句可以避免冗長(zhǎng)的 if..elseif..else 代碼塊烹困。
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
工作原理:
- 對(duì)表達(dá)式(通常是變量)進(jìn)行一次計(jì)算
- 把表達(dá)式的值與結(jié)構(gòu)中 case 的值進(jìn)行比較
- 如果存在匹配玄妈,則執(zhí)行與 case 關(guān)聯(lián)的代碼
- 代碼執(zhí)行后,break 語(yǔ)句阻止代碼跳入下一個(gè) case 中繼續(xù)執(zhí)行
- 如果沒有 case 為真髓梅,則使用 default 語(yǔ)句
<?php
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>
</body>
</html>
PHP for 循環(huán)
PHP for 循環(huán)執(zhí)行代碼塊指定的次數(shù)拟蜻。
如果您已經(jīng)提前確定腳本運(yùn)行的次數(shù),可以使用 for 循環(huán)枯饿。
for (init counter; test counter; increment counter) {
code to be executed;
}
參數(shù):
- init counter:初始化循環(huán)計(jì)數(shù)器的值
- test counter:: 評(píng)估每個(gè)循環(huán)迭代瞭郑。如果值為 TRUE,繼續(xù)循環(huán)鸭你。如果它的值為 FALSE,循環(huán)結(jié)束擒权。
- increment counter:增加循環(huán)計(jì)數(shù)器的值
下面的例子顯示了從 0 到 10 的數(shù)字:
<?php
for ($x=0; $x<=10; $x++) {
echo "數(shù)字是:$x <br>";
}
?>
PHP foreach 循環(huán)
foreach 循環(huán)只適用于數(shù)組袱巨,并用于遍歷數(shù)組中的每個(gè)鍵/值對(duì)。
語(yǔ)法
foreach ($array as $value) {
code to be executed;
}
每進(jìn)行一次循環(huán)迭代碳抄,當(dāng)前數(shù)組元素的值就會(huì)被賦值給 $value 變量愉老,并且數(shù)組指針會(huì)逐一地移動(dòng),直到到達(dá)最后一個(gè)數(shù)組元素剖效。
下面的例子演示的循環(huán)將輸出給定數(shù)組($colors)的值:
實(shí)例
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
PHP 函數(shù)
PHP 的真正力量來(lái)自它的函數(shù):它擁有超過(guò) 1000 個(gè)內(nèi)建的函數(shù)嫉入。
PHP 用戶定義函數(shù)
除了內(nèi)建的 PHP 函數(shù),我們可以創(chuàng)建我們自己的函數(shù)璧尸。
函數(shù)是可以在程序中重復(fù)使用的語(yǔ)句塊咒林。
頁(yè)面加載時(shí)函數(shù)不會(huì)立即執(zhí)行。
函數(shù)只有在被調(diào)用時(shí)才會(huì)執(zhí)行爷光。
在 PHP 創(chuàng)建用戶定義函數(shù)
用戶定義的函數(shù)聲明以關(guān)單 "function" 開頭:
語(yǔ)法
function functionName() {
被執(zhí)行的代碼;
}
注釋:函數(shù)名能夠以字母或下劃線開頭(而非數(shù)字)垫竞。
注釋:函數(shù)名對(duì)大小寫不敏感。
提示:函數(shù)名應(yīng)該能夠反映函數(shù)所執(zhí)行的任務(wù)蛀序。
在下面的例子中欢瞪,我們創(chuàng)建名為 "writeMsg()" 的函數(shù)。打開的花括號(hào)({)指示函數(shù)代碼的開始徐裸,而關(guān)閉的花括號(hào)(})指示函數(shù)的結(jié)束遣鼓。此函數(shù)輸出 "Hello world!"。如需調(diào)用該函數(shù)重贺,只要使用函數(shù)名即可:
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 調(diào)用函數(shù)
?>
PHP 函數(shù)參數(shù)
可以通過(guò)參數(shù)向函數(shù)傳遞信息骑祟。參數(shù)類似變量回懦。
參數(shù)被定義在函數(shù)名之后,括號(hào)內(nèi)部曾我。您可以添加任意多參數(shù)粉怕,只要用逗號(hào)隔開即可。
下面的例子中的函數(shù)有一個(gè)參數(shù)($fname)抒巢。當(dāng)調(diào)用 familyName() 函數(shù)時(shí)贫贝,我們同時(shí)要傳遞一個(gè)名字(例如 Bill),這樣會(huì)輸出不同的名字蛉谜,但是姓氏相同:
<?php
function familyName($fname) {
echo "$fname Zhang.<br>";
}
familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>
PHP 默認(rèn)參數(shù)值
下面的例子展示了如何使用默認(rèn)參數(shù)稚晚。如果我們調(diào)用沒有參數(shù)的 setHeight() 函數(shù),它的參數(shù)會(huì)取默認(rèn)值:
<?php
function setHeight($minheight=50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // 將使用默認(rèn)值 50
setHeight(135);
setHeight(80);
?>
PHP 函數(shù) - 返回值
如需使函數(shù)返回值型诚,請(qǐng)使用 return 語(yǔ)句:
<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>
PHP 數(shù)組
數(shù)組能夠在單獨(dú)的變量名中存儲(chǔ)一個(gè)或多個(gè)值客燕。
<?php
$cars=array("Volvo","BMW","SAAB");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
在 PHP 中創(chuàng)建數(shù)組
在 PHP 中, array() 函數(shù)用于創(chuàng)建數(shù)組:
array();
在 PHP 中狰贯,有三種數(shù)組類型:
- 索引數(shù)組 - 帶有數(shù)字索引的數(shù)組
- 關(guān)聯(lián)數(shù)組 - 帶有指定鍵的數(shù)組
- 多維數(shù)組 - 包含一個(gè)或多個(gè)數(shù)組的數(shù)組
PHP 索引數(shù)組
有兩種創(chuàng)建索引數(shù)組的方法:
- 索引是自動(dòng)分配的(索引從 0 開始):
$cars=array("Volvo","BMW","SAAB");
- 或者也可以手動(dòng)分配索引:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
下面的例子創(chuàng)建名為 $cars 的索引數(shù)組也搓,為其分配三個(gè)元素,然后輸出包含數(shù)組值的一段文本:
<?php
$cars=array("Volvo","BMW","SAAB");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
獲得數(shù)組的長(zhǎng)度 - count() 函數(shù)
count() 函數(shù)用于返回?cái)?shù)組的長(zhǎng)度(元素?cái)?shù)):
<?php
$cars=array("Volvo","BMW","SAAB");
echo count($cars);
?>
遍歷索引數(shù)組
如需遍歷并輸出索引數(shù)組的所有值涵紊,您可以使用 for 循環(huán)傍妒,就像這樣:
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
PHP 關(guān)聯(lián)數(shù)組
關(guān)聯(lián)數(shù)組是使用您分配給數(shù)組的指定鍵的數(shù)組。
有兩種創(chuàng)建關(guān)聯(lián)數(shù)組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
隨后可以在腳本中使用指定鍵:
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
遍歷關(guān)聯(lián)數(shù)組
如需遍歷并輸出關(guān)聯(lián)數(shù)組的所有值摸柄,您可以使用 foreach 循環(huán)颤练,就像這樣:
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
PHP 數(shù)組排序
數(shù)組中的元素能夠以字母或數(shù)字順序進(jìn)行升序或降序排序。
PHP - 數(shù)組的排序函數(shù)
在本節(jié)中驱负,我們將學(xué)習(xí)如下 PHP 數(shù)組排序函數(shù):
- sort() - 以升序?qū)?shù)組排序
- rsort() - 以降序?qū)?shù)組排序
- asort() - 根據(jù)值嗦玖,以升序?qū)﹃P(guān)聯(lián)數(shù)組進(jìn)行排序
- ksort() - 根據(jù)鍵,以升序?qū)﹃P(guān)聯(lián)數(shù)組進(jìn)行排序
- arsort() - 根據(jù)值跃脊,以降序?qū)﹃P(guān)聯(lián)數(shù)組進(jìn)行排序
- krsort() - 根據(jù)鍵宇挫,以降序?qū)﹃P(guān)聯(lián)數(shù)組進(jìn)行排序
對(duì)數(shù)組進(jìn)行升序排序 - sort()
下面的例子按照字母升序?qū)?shù)組 $cars 中的元素進(jìn)行排序:
<?php
$cars=array("Volvo","BMW","SAAB");
sort($cars);
?>
PHP 全局變量 - 超全局變量
超全局變量 在 PHP 4.1.0 中引入,是在全部作用域中始終可用的內(nèi)置變量酪术。
PHP 全局變量 - 超全局變量
PHP 中的許多預(yù)定義變量都是“超全局的”捞稿,這意味著它們?cè)谝粋€(gè)腳本的全部作用域中都可用。在函數(shù)或方法中無(wú)需執(zhí)行 global $variable; 就可以訪問(wèn)它們拼缝。
這些超全局變量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION