PHP____揚(yáng)帆起航


引言

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;
}

工作原理:

  1. 對(duì)表達(dá)式(通常是變量)進(jìn)行一次計(jì)算
  2. 把表達(dá)式的值與結(jié)構(gòu)中 case 的值進(jìn)行比較
  3. 如果存在匹配玄妈,則執(zhí)行與 case 關(guān)聯(lián)的代碼
  4. 代碼執(zhí)行后,break 語(yǔ)句阻止代碼跳入下一個(gè) case 中繼續(xù)執(zhí)行
  5. 如果沒有 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ù)組的方法:

  1. 索引是自動(dòng)分配的(索引從 0 開始):
$cars=array("Volvo","BMW","SAAB");
  1. 或者也可以手動(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娱局,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咧七,更是在濱河造成了極大的恐慌衰齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件继阻,死亡現(xiàn)場(chǎng)離奇詭異耻涛,居然都是意外死亡废酷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門抹缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)澈蟆,“玉大人,你說(shuō)我怎么就攤上這事卓研∨糠” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奏赘,是天一觀的道長(zhǎng)寥闪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)磨淌,這世上最難降的妖魔是什么疲憋? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮梁只,結(jié)果婚禮上缚柳,老公的妹妹穿的比我還像新娘。我一直安慰自己搪锣,他們只是感情好喂击,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淤翔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佩谷。 梳的紋絲不亂的頭發(fā)上旁壮,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音谐檀,去河邊找鬼抡谐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桐猬,可吹牛的內(nèi)容都是我干的麦撵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼溃肪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼免胃!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起惫撰,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羔沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后厨钻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扼雏,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坚嗜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诗充。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苍蔬。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝴蜓,靈堂內(nèi)的尸體忽然破棺而出碟绑,到底是詐尸還是另有隱情,我是刑警寧澤励翼,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布蜈敢,位于F島的核電站,受9級(jí)特大地震影響汽抚,放射性物質(zhì)發(fā)生泄漏抓狭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一造烁、第九天 我趴在偏房一處隱蔽的房頂上張望否过。 院中可真熱鬧,春花似錦惭蟋、人聲如沸苗桂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煤伟。三九已至,卻和暖如春木缝,著一層夾襖步出監(jiān)牢的瞬間便锨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工我碟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留放案,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓矫俺,卻偏偏與公主長(zhǎng)得像吱殉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厘托,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒友雳。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,360評(píng)論 0 20
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,128評(píng)論 0 3
  • 總結(jié)了一些開發(fā)中常用的函數(shù): usleep() //函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() //函數(shù)從二進(jìn)制...
    ADL2022閱讀 454評(píng)論 0 3
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 3,333評(píng)論 0 2
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評(píng)論 0 5