成都市建設(shè)網(wǎng)站首頁(yè)地推的60種方法
零、phpstorm的配置:
當(dāng)我們下載好phpstorm后,需要更改一些配置才能正常訪問網(wǎng)頁(yè):
1、點(diǎn)擊File--setting--PHP后,點(diǎn)擊下圖的三個(gè)點(diǎn)(這邊需要留意的是PHP language level的版本,圖上是5.6)
2、點(diǎn)擊加號(hào)--選擇-Local Path to Interpreter...--設(shè)置PHP executable的文件路徑:
3、選擇我們phpstudy的安裝目錄,往下找到PHP Tutorial,選擇任意一個(gè)比PHP language level的版本一樣或高的版本,選擇php.exe;
E:\php\php-5.6.27-nts\php.exe
4、完成配置
一、PHP 簡(jiǎn)介
1、PHP是什么
-
PHP(Hypertext Preprocessor,即 “超文本預(yù)處理器”)是一種功能強(qiáng)大的嵌入式通用開源腳本語(yǔ)言。它在互聯(lián)網(wǎng)領(lǐng)域發(fā)揮著至關(guān)重要的作用,為網(wǎng)站開發(fā)和動(dòng)態(tài)網(wǎng)頁(yè)生成提供了高效且便捷的解決方案。
-
PHP 憑借其簡(jiǎn)單易學(xué)、易用、跨平臺(tái)、開源等顯著特點(diǎn),迅速成為主流的網(wǎng)站開發(fā)語(yǔ)言之一。其應(yīng)用范圍廣泛,涵蓋了電商、社交、新聞、博客等各個(gè)行業(yè)的網(wǎng)站。無論是小型個(gè)人網(wǎng)站還是大型企業(yè)級(jí)應(yīng)用,都能看到 PHP 的身影。
-
PHP 腳本在服務(wù)器端執(zhí)行,這意味著當(dāng)用戶在瀏覽器中請(qǐng)求頁(yè)面時(shí),服務(wù)器會(huì)先處理 PHP 腳本生成相應(yīng)的 HTML 內(nèi)容,然后將最終的 HTML 頁(yè)面返回給瀏覽器顯示。
2、PHP文件是什么
-
PHP 文件是一種綜合性的文檔,它通常由文本、HTML 標(biāo)記、JavaScript 代碼以及 PHP 代碼等多種元素組成。這些不同類型的代碼相互協(xié)作,共同實(shí)現(xiàn)網(wǎng)頁(yè)的功能和呈現(xiàn)效果。
-
PHP 代碼在服務(wù)器端執(zhí)行,其執(zhí)行結(jié)果以純 HTML 格式返回給瀏覽器。這使得網(wǎng)頁(yè)能夠根據(jù)不同的條件和用戶輸入動(dòng)態(tài)生成內(nèi)容,提供更加個(gè)性化和交互性的用戶體驗(yàn)。
-
PHP 文件的默認(rèn)擴(kuò)展名是.php,這一擴(kuò)展名向服務(wù)器和開發(fā)工具表明該文件包含 PHP 代碼,需要進(jìn)行相應(yīng)的處理和解釋。
3、PHP的作用
-
PHP 可以生成動(dòng)態(tài)頁(yè)面內(nèi)容:
PHP 具有強(qiáng)大的動(dòng)態(tài)頁(yè)面生成能力,能夠根據(jù)用戶的操作、數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及各種條件實(shí)時(shí)生成個(gè)性化的頁(yè)面內(nèi)容。例如,根據(jù)用戶的登錄狀態(tài)顯示不同的信息,或者根據(jù)用戶的搜索關(guān)鍵詞提供相關(guān)的結(jié)果。 -
PHP 可以創(chuàng)建、打開、讀取、寫入、關(guān)閉服務(wù)器上的文件:
PHP 可以對(duì)服務(wù)器上的文件進(jìn)行全面的操作,包括創(chuàng)建新文件、打開現(xiàn)有文件、讀取文件內(nèi)容、向文件寫入數(shù)據(jù)以及關(guān)閉文件。這使得網(wǎng)站能夠?qū)崿F(xiàn)文件上傳、下載、日志記錄等功能。 -
PHP 可以收集表單數(shù)據(jù):
PHP 能夠方便地收集用戶通過表單提交的數(shù)據(jù),如注冊(cè)信息、留言內(nèi)容、訂單詳情等。通過對(duì)這些數(shù)據(jù)的處理,網(wǎng)站可以實(shí)現(xiàn)與用戶的交互和信息收集。 -
PHP 可以發(fā)送和接收 cookies:
PHP 支持發(fā)送和接收 cookies,用于在用戶的瀏覽器中存儲(chǔ)和獲取數(shù)據(jù)。Cookies 可以用于記住用戶的登錄狀態(tài)、偏好設(shè)置、購(gòu)物車信息等,提升用戶在網(wǎng)站上的體驗(yàn)。 -
PHP 可以添加、刪除、修改您的數(shù)據(jù)庫(kù)中的數(shù)據(jù):
PHP 可以與各種數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行交互,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的添加、刪除、修改和查詢操作。這使得網(wǎng)站能夠存儲(chǔ)和管理大量的信息,如用戶數(shù)據(jù)、文章內(nèi)容、商品信息等。 -
PHP 可以限制用戶訪問您的網(wǎng)站上的一些頁(yè)面:
PHP 可以通過設(shè)置訪問權(quán)限和條件判斷,限制用戶對(duì)網(wǎng)站某些頁(yè)面或功能的訪問。例如,只有注冊(cè)并登錄的用戶才能訪問特定的會(huì)員頁(yè)面,或者只有管理員才能執(zhí)行某些敏感操作。 -
PHP 可以加密數(shù)據(jù):
PHP 提供了加密相關(guān)的函數(shù)和方法,可以對(duì)數(shù)據(jù)進(jìn)行加密處理,確保數(shù)據(jù)在傳輸和存儲(chǔ)過程中的安全性和保密性,保護(hù)用戶的隱私和網(wǎng)站的重要信息。
????????通過 PHP 的強(qiáng)大功能,我們不再局限于輸出簡(jiǎn)單的 HTML 頁(yè)面。它還能夠輸出各種多媒體文件,如圖像、PDF 文件,甚至是復(fù)雜的 Flash 電影。不僅如此,我們還可以生成各種特定格式的文本,比如 XHTML 和 XML,以滿足不同的需求和應(yīng)用場(chǎng)景。
4、使用 PHP的原因
-
PHP 可在不同的平臺(tái)上運(yùn)行(Windows、Linux、Unix、Mac OS X 等):
PHP 具有出色的跨平臺(tái)性,能夠在多種操作系統(tǒng)上穩(wěn)定運(yùn)行,包括 Windows、Linux、Unix、Mac OS X 等。這使得開發(fā)人員可以在自己熟悉的操作系統(tǒng)上進(jìn)行開發(fā),然后將應(yīng)用輕松部署到不同的服務(wù)器環(huán)境中,減少了因平臺(tái)差異帶來的兼容性問題。 -
PHP 與目前幾乎所有的正在被使用的服務(wù)器相兼容(Apache、IIS 等):
PHP 與目前幾乎所有正在被廣泛使用的服務(wù)器軟件相兼容,如 Apache、IIS 等。這種廣泛的兼容性使得在不同的服務(wù)器配置下部署 PHP 應(yīng)用變得非常簡(jiǎn)單,降低了服務(wù)器配置和部署的復(fù)雜性和成本。 -
PHP 提供了廣泛的數(shù)據(jù)庫(kù)支持:
PHP 提供了對(duì)眾多主流數(shù)據(jù)庫(kù)系統(tǒng)的支持,如 MySQL、Oracle、SQL Server 等。通過豐富的數(shù)據(jù)庫(kù)擴(kuò)展和函數(shù)庫(kù),開發(fā)人員可以方便地與數(shù)據(jù)庫(kù)進(jìn)行交互,執(zhí)行各種復(fù)雜的數(shù)據(jù)庫(kù)操作,滿足不同規(guī)模和需求的應(yīng)用場(chǎng)景。 -
PHP 易于學(xué)習(xí),并可高效地運(yùn)行在服務(wù)器端:
PHP 的語(yǔ)法相對(duì)簡(jiǎn)單易懂,學(xué)習(xí)曲線較為平緩,對(duì)于初學(xué)者來說容易入門。同時(shí),PHP 在服務(wù)器端的運(yùn)行效率較高,能夠快速處理大量的并發(fā)請(qǐng)求,保證網(wǎng)站的性能和響應(yīng)速度。
二、PHP基本語(yǔ)法
1、PHP的基本語(yǔ)法
PHP 腳本在文檔中的位置非常靈活,可以嵌入在 HTML 代碼的任何位置。
PHP 的基本語(yǔ)法結(jié)構(gòu)如下:
<?php
// PHP 代碼
?>
- PHP 文件的默認(rèn)文件擴(kuò)展名是 .php;
- 在一個(gè) PHP 文件中,通常會(huì)包含 HTML 標(biāo)簽和 PHP 腳本代碼。兩者相互配合,共同構(gòu)建出完整的網(wǎng)頁(yè)功能和顯示效果。
- 例:下面,我們提供了一個(gè)簡(jiǎn)單的 PHP 文件實(shí)例,它可以向?yàn)g覽器輸出文本 "Hello World!":
<!DOCTYPE html>
<meta charset="utf-8"/>
<html>
<body>
<h1>My first PHP page</h1>
<?php
echo "Hello World!";
?>
</body>
</html>
注意事項(xiàng):
1、PHP 中的每個(gè)代碼行都必須以分號(hào)結(jié)束。分號(hào)是一種分隔符,用于清晰地區(qū)分不同的指令集,確保 PHP 解釋器能夠正確理解和執(zhí)行代碼。
2、通過 PHP 向?yàn)g覽器輸出文本有兩種基礎(chǔ)指令:echo 和 print。然而,由于 print 指令在某些情況下可能存在性能和使用便利性方面的不足,因此在實(shí)際開發(fā)中,通常更推薦使用 echo 指令。
2、PHP 中的注釋
-
程序的注釋是解釋性語(yǔ)句,注釋中的所有字符會(huì)被 PHP 解釋器忽略。所有的編程語(yǔ)言都允許某種形式的注釋。
-
因此,注釋就是為了增強(qiáng)源代碼的可讀性;而在PHP中,就 支持 單行注釋 和 多行注釋 。
1) 多行注釋:
????????多行注釋以 /* 開始,以 */ 結(jié)束。需要注意的是,多行注釋不能嵌套使用,以避免可能的混淆和錯(cuò)誤。
2) 單行注釋:
????????單行注釋以 // 開始,從 // 之后到本行結(jié)束的所有文字都被視為注釋內(nèi)容。
<?php
// 這是 PHP 單行注釋 //這個(gè)就是嵌套 //再來一個(gè)嵌套
?
/*
這是PHP 多行注釋
*/
?>
三、PHP變量和數(shù)據(jù)類型
1、PHP變量:
-
變量在編程中就像是用于存儲(chǔ)信息的 “容器”,可以根據(jù)需要隨時(shí)更改其中存儲(chǔ)的值。
<?php
$x=5;$y=6;$z=$x+$y;
echo $z;
?>
-
這種方式與代數(shù)中的概念類似。
x=5;y=6;z=x+y;
在代數(shù)中,我們使用字母,并給它賦值;
從上面的表達(dá)式 z=x+y ,我們可以計(jì)算出 z 的值為 11。在 PHP 中,這些字母被稱為變量。
2、PHP 變量規(guī)則:
變量的命名在 PHP 中有著明確的規(guī)范:
-
首先,變量必須以 $ 符號(hào)開頭,然后緊跟變量的名稱。
-
變量名的起始字符必須是字母或者下劃線。
-
變量名只能由字母、數(shù)字以及下劃線(A-z、0-9 和 _ )組成。
-
變量名中不能包含空格,以確保變量名的一致性和可識(shí)別性。
-
變量名是區(qū)分大小寫的,這意味著 $y 和 $Y 被視為兩個(gè)完全不同的變量。
重要提示: PHP 中的語(yǔ)句和變量都是區(qū)分大小寫的,因此在編寫代碼時(shí)必須嚴(yán)格遵循這一規(guī)則,以避免因大小寫不一致導(dǎo)致的錯(cuò)誤。
3、創(chuàng)建(聲明)PHP 變量
-
PHP 沒有聲明變量的命令。變量在您第一次賦值給它的時(shí)候被創(chuàng)建
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
-
在上面的語(yǔ)句執(zhí)行中,變量 txt 將保存值 Hello world!,且變量 x 將保存值 5。
-
注意:當(dāng)賦一個(gè)文本值給變量時(shí),需要在文本值兩側(cè)加上引號(hào)。
PHP 是一門弱類型語(yǔ)言
-
在上述實(shí)例中,我們可以發(fā)現(xiàn),在 PHP 中無需事先聲明變量的數(shù)據(jù)類型。
-
PHP 會(huì)根據(jù)變量所賦的值自動(dòng)推斷并轉(zhuǎn)換為合適的數(shù)據(jù)類型。
-
與之相對(duì),在強(qiáng)類型的編程語(yǔ)言中,如 Java 、C++ 等,在使用變量之前必須明確聲明(定義)變量的類型和名稱。
四、PHP數(shù)據(jù)類型
-
PHP語(yǔ)言有7種數(shù)據(jù)類型,每一個(gè)變量對(duì)應(yīng)著一個(gè)數(shù)據(jù)類型:
-
字符串(String) , 整型(Integer) , 浮點(diǎn)型 (Float), 布爾型 (boolean), 數(shù)組(Array) , 對(duì)象 (Object),空值(NULL)
1、字符串(String)
-
字符串變量用于存儲(chǔ)并處理文本;
-
字符串變量用于包含有字符的值;
-
在創(chuàng)建字符串之后,我們就可以對(duì)它進(jìn)行操作了。您可以直接在函數(shù)中使用字符串,或者把它存儲(chǔ)在變量中;
-
我們可以將將任何文本放在 單引號(hào) 或 雙引號(hào) 中形成一個(gè)字符串“0
在下面的實(shí)例中,我們創(chuàng)建一個(gè)名為 txt 的字符串變量,并賦值為 "Hello world!" 。然后我們輸出 txt 變量的值:
<?php
$txt="Hello world!";
echo $txt;
?>
//輸出:
Hello world!
-
注意:當(dāng)賦一個(gè)文本值給變量時(shí),請(qǐng)記得給文本值加上單引號(hào)或者雙引號(hào)。
2、整型(Integer)
-
整數(shù)是一個(gè)沒有小數(shù)的數(shù)字
【PHP var_dump() 函數(shù)可以輸出變量的值和數(shù)據(jù)類型】
-
整數(shù)規(guī)則:
-
整數(shù)可以是正數(shù)或負(fù)數(shù)
-
整型可以用三種格式來指定:十進(jìn)制,十六進(jìn)制 ( 前綴為 0x ) 或八進(jìn)制 ( 前綴為 0 )
-
<?php$x = ?29;echo "$x";echo "<br>";var_dump($x);echo "<br><br>";$y = ?-29;echo "$y";echo "<br>";var_dump($y);echo "<br><br>";$x = ?0xcc; //十六進(jìn)制echo "$x";echo "<br>";var_dump($x);echo "<br><br>";$y = ?027; //八進(jìn)制echo "$y";echo "<br>";var_dump($y);echo "<br><br>";
?>
輸出:
29
int(29)
?
-29
int(-29)
?
204
int(204)
?
23
int(23)
3、浮點(diǎn)型(Float)
-
浮點(diǎn)數(shù)是帶小數(shù)部分的數(shù)字,或是指數(shù)形式
<?php
$x = ?27.365;
echo "$x";echo "<br>";
var_dump($x);echo "<br><br>";
$y = ?27.4e3; //27400
echo "$y";echo "<br>";
var_dump($y);echo "<br><br>";
$x = ?2e-5; //2.0e-5
echo "$x";echo "<br>";
var_dump($x);echo "<br><br>";
?>
//輸出:
27.365
float(27.365)
?
27400
float(27400)
?
2.0E-5
float(2.0E-5)
4、布爾型(boolean)
布爾型可以是常量 TRUE 或 FALSE【TRUE 或 FALSE 大小寫都可以,不過為了好識(shí)別,一般情況下使用小寫的】
布爾型通常用于條件判斷。在接下來的條件控制章節(jié)中你們會(huì)頻繁和 BOOL 類型打交道
<?php
$x = ?true;
$y = ?false;
?
var_dump($x);echo "<br>";
var_dump($y);
?>
//輸出:
bool(true)
bool(false)
5、數(shù)組(Array)
數(shù)組可以在一個(gè)變量中存儲(chǔ)多個(gè)值
在接下來的章節(jié)中我們將學(xué)到更多關(guān)于數(shù)組的知識(shí)
<?php
$cars = ?array("zzy","szy","wh");
echo "<pre>";
var_dump($cars);
echo "</pre>"
?>
//輸出:
array(3) {[0]=>string(3) "zzy"[1]=>string(3) "szy"[2]=>string(2) "wh"
}
6、對(duì)象(Object)
對(duì)象數(shù)據(jù)類型也可以用于存儲(chǔ)數(shù)據(jù)
在 PHP 中,對(duì)象必須先聲明然后再使用。首先,必須使用 class 關(guān)鍵字聲明類對(duì)象,類是可以包含屬性和方法的結(jié)構(gòu)。然后我們?cè)陬愔卸x數(shù)據(jù)類型,最后在實(shí)例化的類中使用數(shù)據(jù)類型。
下面的范例中 PHP 關(guān)鍵字 this 就是指向當(dāng)前對(duì)象實(shí)例的指針,不指向任何其它對(duì)象或類:
<?php
class Car
{var $color;function __construct($color = "green"){$this->color = $color;}
?function what_color(){return $this->color;}
}
?
function print_vars($obj)
{foreach (get_object_vars($obj) as $prop => $val) {echo "/t$prop = $val\n";}
}
//instantiate one object
$herbie = new Car("white");
?
//show herbie properties
echo "\herbie:Properties\n";
print_vars($herbie)
?
?>
//輸出:
\herbie:Properties /tcolor = white
7、空值(NULL)
NULL 值表示變量沒有值
null 是數(shù)據(jù)類型為 NULL 的值
null 不區(qū)分大小寫,可以使 null 或 NULL,但推薦使用 NULL;
可以通過設(shè)置變量值為 NULL 來清空變量數(shù)據(jù)
<?php
$x = NULL;
var_dump($x);
?>
五、PHP 運(yùn)算符
在 PHP 中,賦值運(yùn)算符 = 用于給變量賦值。 在 PHP 中,算術(shù)運(yùn)算符 + 用于把值加在一起。
1、PHP 算術(shù)運(yùn)算符
運(yùn)算符 | 名稱 | 描述 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|
x + y | 加 | x 和 y 的和 | 2 + 2 | 4 |
x - y | 減 | x 和 y 的差 | 5 - 2 | 3 |
x * y | 乘 | x 和 y 的積 | 5 * 2 | 10 |
x / y | 除 | x 和 y 的商 | 15 / 5 | 3 |
x % y | 模(除法的余數(shù)) | x 除以 y 的余數(shù) | 5 % 2 | 1 |
-x | 設(shè)置復(fù)數(shù) | 取 x 的相反符號(hào) | <?php $x = 2;echo -$x; ?> | -2 |
~x | 取反 | x 取反,按二進(jìn)制位進(jìn)行“取反”運(yùn)算。運(yùn)算規(guī)則:~1=-2;~0=-1; | <?php $x = 2;<br/>echo ~$x; ?> | -3 |
a . b | 并置 | 連接兩個(gè)字符串 | “Hi”."Ha" | HiHa |
<?php
$x=10;
$y=6;
echo ($x + $y); // 輸出16
echo '<br>';
echo ($x - $y); // 輸出4
echo '<br>';
echo ($x * $y); // 輸出60
echo '<br>';
echo ($x / $y); // 輸出1.6666666666667
echo '<br>';
echo ($x % $y); // 輸出4
echo '<br>';
echo -$x;
?>
PHP7+ 版本新增整除運(yùn)算符 intdiv(),該函數(shù)返回值為第一個(gè)參數(shù)除于第二個(gè)參數(shù)的值并取整(向下取整),使用實(shí)例:
<?php
var_dump(intdiv(10, 3));
?>
2、PHP 賦值運(yùn)算符
運(yùn)算符 | 等同于 | 描述 |
---|---|---|
x = y | x = y | 左操作數(shù)被設(shè)置為右側(cè)表達(dá)式的值 |
x += y | x = x + y | 加 |
x -= y | x = x - y | 減 |
x *= y | x = x * y | 乘 |
x /= y | x = x / y | 除 |
x = x / y | x = x % y | 模(除法的余數(shù)) |
a .= b | a = a . b | 連接兩個(gè)字符串 |
<?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
$a = "Hello";
$b = $a . " world!";
echo $b; // 輸出Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 輸出Hello world!
?>
3、PHP 遞增/遞減運(yùn)算符
運(yùn)算符 | 名稱 | 描述 |
---|---|---|
++ x | 預(yù)遞增 | x 加 1,然后返回 x |
x ++ | 后遞增 | 返回 x,然后 x 加 1 |
-- x | 預(yù)遞減 | x 減 1,然后返回 x |
x -- | 后遞減 | 返回 x,然后 x 減 1 |
<?php
$x=10;
echo ++$x; // 輸出11
$y=10;
echo $y++; // 輸出10
$z=5;
echo --$z; // 輸出4
$i=5;
echo $i--; // 輸出5
?>
4、PHP 比較運(yùn)算符
運(yùn)算符 | 名稱 | 描述 | 實(shí)例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,則返回 true | 5==8 返回 false |
x ===y | 絕對(duì)等于 | 如果 x 等于 y,且它們類型相同,則返回true | 5==="5" 返回false |
x != y | 不等于 | 如果 x 不等于 y,則返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,則返回 true | 5<>8 返回 true |
x !== y | 不絕對(duì)等于 | 如果 x 不等于 y,或它們類型不相同,則返回 | 5!=="5" 返回 true |
x > y | 大于 | true如果 x 大于 y,則返回 true | 5!=="5" 返回 true |
x < y | 小于 | 如果 x 小于 y,則返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,則返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,則返回 true | 5<=8 返回 true |
<?php
$x=100;
$y="100";
?
var_dump($x == $y); //true
echo "<br>";
var_dump($x === $y); //false
echo "<br>";
var_dump($x != $y); //false
echo "<br>";
var_dump($x !== $y); //true
echo "<br>";
?
$a=50;
$b=90;
?
var_dump($a > $b); //false
echo "<br>";
var_dump($a < $b); //true
?>
5、PHP 邏輯運(yùn)算符
運(yùn)算符 | 名稱 | 描述 | 實(shí)例 |
---|---|---|---|
x and y | 與 | 如果 x 和 y 都為 true,則返回 true | x=6 y=3 (x < 10 and y > 1) 返回 true |
x or y | 或 | 如果 x 和 y 至少有一個(gè)為 true,則返回 true | x=6 y=3 (x==6 or y==5) 返回 true |
x xor y | 異或 | 如果 x 和 y 有且僅有一個(gè)為 true,則返回 true | x=6 y=3 (x==6 xor y==3) 返回 false |
x && y | 與 | 如果 x 和 y 都為 true,則返回 true | x=6 y=3 (x < 10 && y > 1) 返回 true |
x || y | 或 | 如果 x 和 y 至少有一個(gè)為 true,則返回 true | x=6 y=3 (x==5 || y==5) 返回 false |
! x | 非 | 如果 x 不為 true,則返回 true | x=6 y=3 !(x==y) 返回 true |
6、PHP 數(shù)組運(yùn)算符
運(yùn)算符 | 名稱 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
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 數(shù)組合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
7、三元運(yùn)算符
-
另一個(gè)條件運(yùn)算符是"?:"(或三元)運(yùn)算符 。語(yǔ)法格式:
(expr1) ? (expr2) : (expr3)
對(duì) expr1 求值為 TRUE 時(shí)的值為 expr2,在 expr1 求值為 FALSE 時(shí)的值為 expr3。
實(shí)例:
<?php
// 普通寫法
$username = 11>10 ? 'yes' : 'no';
echo $username, PHP_EOL;
?>
8、運(yùn)算符優(yōu)先級(jí)
-
下表按照優(yōu)先級(jí)從高到低列出了運(yùn)算符。同一行中的運(yùn)算符具有相同優(yōu)先級(jí),此時(shí)它們的結(jié)合方向決定求值順序。
-
說明:左 = 從左到右,右 = 從右到左。
結(jié)合方向 | 運(yùn)算符 | 附加信息 |
---|---|---|
無 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 類型和遞增/遞減 |
無 | instanceof | 類型 |
右 | ! | 邏輯運(yùn)算符 |
左 | * / % | 算術(shù)運(yùn)算符 |
左 | + - . | 算術(shù)運(yùn)算符和字符串運(yùn)算符 |
左 | << >> | 位運(yùn)算符 |
無 | == != === !== <> | 比較運(yùn)算符 |
左 | & | 位運(yùn)算符和引用 |
左 | ^ | 位運(yùn)算符 |
左 | | | 位運(yùn)算符 |
左 | && | 邏輯運(yùn)算符 |
左 | || | 邏輯運(yùn)算符 |
左 | ?: | 三元運(yùn)算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 賦值運(yùn)算符 |
左 | and | 邏輯運(yùn)算符 |
左 | xor | 邏輯運(yùn)算符 |
左 | or | 邏輯運(yùn)算符 |
左 | , | 多處用到 |
運(yùn)算符優(yōu)先級(jí)中,or 和 ||,&& 和 and 都是邏輯運(yùn)算符,效果一樣,但是其優(yōu)先級(jí)卻不一樣。
<?php
// 優(yōu)先級(jí): && > = > and
// 優(yōu)先級(jí): || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 這里的 $c 為 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //這里的 $d 就是 boolean 值 true
?>
括號(hào)的使用
我們通過括號(hào)的配對(duì)來明確標(biāo)明運(yùn)算順序,而非靠運(yùn)算符優(yōu)先級(jí)和結(jié)合性來決定,通常能夠增加代碼的可讀性。
<?php
// 括號(hào)優(yōu)先運(yùn)算
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "\n";
$e = ($a + $b) * $c; // 使用括號(hào)
echo $e;
echo "\n";
?>
六、局部和全局作用域
1、局部和全局作用域
-
在所有函數(shù)外部定義的變量,擁有全局作用域。除了函數(shù)外,全局變量可以被腳本中的任何部分訪問,
-
要在一個(gè)函數(shù)中訪問一個(gè)全局變量,需要使用 global 關(guān)鍵字
-
(內(nèi)部函數(shù)要訪問外部變量的時(shí)候需要globol在“引入”)
在 PHP 函數(shù)內(nèi)部聲明的變量是局部變量,僅能在函數(shù)內(nèi)部訪問:
<?php
$x=5; // 全局變量
function myTest(){$y=10; // 局部變量echo "<p>測(cè)試函數(shù)內(nèi)變量:<p>";echo "變量 x 為: $x <br>"; //報(bào)錯(cuò)echo "變量 y 為: $y";}
myTest();
echo "<p>測(cè)試函數(shù)外變量:<p>";
echo "變量 x 為: $x";
echo "<br>";
echo "變量 y 為: $y"; //報(bào)錯(cuò)
?>
在函數(shù)中訪問全局變量:
<?php
// 全局變量
$x=5;
function myTest(){global $x; //使用關(guān)鍵字$y=10; // 局部變量echo "<p>測(cè)試函數(shù)內(nèi)變量:<p>";echo $x; //5echo "<br>";echo "變量 y 為: $y";}
myTest();
echo "<p>測(cè)試函數(shù)外變量:<p>";
echo "變量 x 為: $x";
echo "<br>";
//echo "變量 y 為: $y";
?>
2、global 關(guān)鍵字
-
global 關(guān)鍵字用于函數(shù)內(nèi)訪問全局變量。
在函數(shù)內(nèi)調(diào)用函數(shù)外定義的全局變量,需要在函數(shù)中的變量前加上 global 關(guān)鍵字:
<?php
$x=5;
$y=10;
?
function myTest(){global $x,$y;$y=$x+$y;}
?
myTest();
echo $y; // 輸出 15
?>
-
PHP 將所有全局變量存儲(chǔ)在一個(gè)名為 $GLOBALS[index] 的數(shù)組中。 index 保存變量的名稱。這個(gè)數(shù)組可以在函數(shù)內(nèi)部訪問,也可以直接用來更新全局變量。
上面的實(shí)例可以寫成這樣:
<?php
$x=5;
$y=10;
?
function myTest(){$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];}
?
myTest();
echo $y;
?>
七、作用域
1、Static 作用域
當(dāng)一個(gè)函數(shù)完成時(shí),它的所有變量通常都會(huì)被刪除。然而,有時(shí)候您希望某個(gè)局部變量不要被刪除。 要做到這一點(diǎn),請(qǐng)?jiān)诘谝淮温暶髯兞繒r(shí)使用 static 關(guān)鍵字:
<?php
?
function myTest()
{static $x=0; //static關(guān)鍵字刪除之后 所有結(jié)果都是0echo $x;$x++;echo PHP_EOL; // 換行符
}
?
myTest();
myTest();
myTest();
?>
然后,每次調(diào)用該函數(shù)時(shí),該變量將會(huì)保留著函數(shù)前一次被調(diào)用時(shí)的值。
注釋:該變量仍然是函數(shù)的局部變量。
2、參數(shù)作用域
參數(shù)是通過調(diào)用代碼將值傳遞給函數(shù)的局部變量。 參數(shù)是在參數(shù)列表中聲明的,作為函數(shù)聲明的一部分:
<?php
function myTest($x){echo $x;}
myTest(5);
?>
八、相關(guān)函數(shù)
1、PHP strlen() 函數(shù)
有時(shí)知道字符串值的長(zhǎng)度是很有用的。 strlen() 函數(shù)返回字符串的長(zhǎng)度(字節(jié)數(shù))。 下面的實(shí)例返回字符串 "Hello world!" 的長(zhǎng)度:
<?phpecho strlen("Hello world!");
?>
上面的代碼將輸出:12 提示:strlen() 常常用在循環(huán)和其他函數(shù)中,因?yàn)槟菚r(shí)確定字符串何時(shí)結(jié)束是很重要的。(例如,在循環(huán)中,我們需要在字符串中的最后一個(gè)字符之后結(jié)束循環(huán)。)
2、PHP strpos() 函數(shù)
strpos() 函數(shù)用于在字符串內(nèi)查找一個(gè)字符或一段指定的文本。 如果在字符串中找到匹配,該函數(shù)會(huì)返回第一個(gè)匹配的字符位置。如果未找到匹配,則返回 FALSE。 下面的實(shí)例在字符串 "Hello world!" 中查找文本 "world":
<?phpecho strpos("Hello world!","world");
?>
上面的代碼將輸出:6 提示:在上面的實(shí)例中,字符串 "world" 的位置是 6。之所以是 6 而不是 7 的原因是,字符串中第一個(gè)字符的位置是 0,而不是 1。后面數(shù)組下標(biāo)也是從0開始
3、PHP If...Else 語(yǔ)句
條件語(yǔ)句用于根據(jù)不同條件執(zhí)行不同動(dòng)作。
PHP 條件語(yǔ)句
當(dāng)您編寫代碼時(shí),您常常需要為不同的判斷執(zhí)行不同的動(dòng)作。您可以在代碼中使用條件語(yǔ)句來完成此任務(wù)。 在 PHP 中,提供了下列條件語(yǔ)句:
-
if 語(yǔ)句 - 在條件成立時(shí)執(zhí)行代碼
-
if...else 語(yǔ)句 - 在條件成立時(shí)執(zhí)行一塊代碼,條件不成立時(shí)執(zhí)行另一塊代碼
-
if...elseif....else 語(yǔ)句 - 在若干條件之一成立時(shí)執(zhí)行一個(gè)代碼塊
-
switch 語(yǔ)句 - 在若干條件之一成立時(shí)執(zhí)行一個(gè)代碼塊
1)PHP - if
if 語(yǔ)句用于僅當(dāng)指定條件成立時(shí)執(zhí)行代碼。 語(yǔ)法:
if (條件){條件成立時(shí)要執(zhí)行的代碼;}
如果當(dāng)前時(shí)間小于 20,下面的實(shí)例將輸出 "Have a good day!"
<?php
時(shí)
$t=date("H");
if ($t<"20"){echo "Have a good day!";}
?
分
$t=date("i");
echo $t;
echo "\n";
if ($t<20){echo "Have a good day!";}
?>
2)PHP - if...else
在條件成立時(shí)執(zhí)行一塊代碼,條件不成立時(shí)執(zhí)行另一塊代碼,請(qǐng)使用 if....else 語(yǔ)句。
if (條件)
{條件成立時(shí)執(zhí)行的代碼;
}
else
{條件不成立時(shí)執(zhí)行的代碼;
}
如果當(dāng)前時(shí)間小于 20,下面的實(shí)例將輸出 "Have a good day!",否則輸出 "Have a good night!":
<?php
$t=date("H");
if ($t<"20"){echo "Have a good day!";}
else{echo "Have a good night!";}
?>
3)PHP - if...elseif....else
在若干條件之一成立時(shí)執(zhí)行一個(gè)代碼塊,請(qǐng)使用 if....elseif...else 語(yǔ)句。
if (條件){if 條件成立時(shí)執(zhí)行的代碼;}
elseif (條件){elseif 條件成立時(shí)執(zhí)行的代碼;}
else{條件不成立時(shí)執(zhí)行的代碼;}
如果當(dāng)前時(shí)間小于 10,下面的實(shí)例將輸出 "Have a good morning!",如果當(dāng)前時(shí)間不小于 10 且小于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!";}
?>
4)PHP - switch 語(yǔ)句
switch 語(yǔ)句用于根據(jù)多個(gè)不同條件執(zhí)行不同動(dòng)作。 如果您希望有選擇地執(zhí)行若干代碼塊之一,請(qǐng)使用 switch 語(yǔ)句
<?php
switch (n)
{
case label1:如果 n=label1,此處代碼將執(zhí)行;break;
case label2:如果 n=label2,此處代碼將執(zhí)行;break;
default:如果 n 既不等于 label1 也不等于 label2,此處代碼將執(zhí)行;
}
?>
工作原理:首先對(duì)一個(gè)簡(jiǎn)單的表達(dá)式 n(通常是變量)進(jìn)行一次計(jì)算。將表達(dá)式的值與結(jié)構(gòu)中每個(gè) case的值進(jìn)行比較。如果存在匹配,則執(zhí)行與 case 關(guān)聯(lián)的代碼。代碼執(zhí)行后,使用 break 來阻止代碼跳入下一個(gè) case 中繼續(xù)執(zhí)行。default 語(yǔ)句用于不存在匹配(即沒有 case 為真)時(shí)執(zhí)行。
<?php
$favcolor="red";
switch ($favcolor)
{case "red":echo "你喜歡的顏色是紅色!";break;case "blue":echo "你喜歡的顏色是藍(lán)色!";break;case "green":echo "你喜歡的顏色是綠色!";break;default:echo "你喜歡的顏色不是 紅, 藍(lán), 或綠色!";
}
?>
4、PHP 循環(huán)
在您編寫代碼時(shí),您經(jīng)常需要讓相同的代碼塊一次又一次地重復(fù)運(yùn)行。我們可以在代碼中使用循環(huán)語(yǔ)句 來完成這個(gè)任務(wù)。 在 PHP 中,提供了下列循環(huán)語(yǔ)句:
-
while - 只要指定的條件成立,則循環(huán)執(zhí)行代碼塊
-
do...while - 首先執(zhí)行一次代碼塊,然后在指定的條件成立時(shí)重復(fù)這個(gè)循環(huán)
-
for - 循環(huán)執(zhí)行代碼塊指定的次數(shù)
-
foreach - 根據(jù)數(shù)組中每個(gè)元素來循環(huán)代碼塊
1)while 循環(huán)
while 循環(huán)將重復(fù)執(zhí)行代碼塊,直到指定的條件不成立。
while (條件)
{要執(zhí)行的代碼;
}
下面的實(shí)例首先設(shè)置變量 i 的值為 1 ($i=1;)。 然后,只要 i 小于或者等于 5,while 循環(huán)將繼續(xù)運(yùn)行。循環(huán)每運(yùn)行一次,i 就會(huì)遞增 1
<html>
<body>
<?php$i=1;while($i<=5){echo "The number is " . $i . "<br>";$i++;}
?>
</body>
</html>
?
輸出
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
2)do...while 語(yǔ)句
do...while 語(yǔ)句會(huì)至少執(zhí)行一次代碼,然后檢查條件,只要條件成立,就會(huì)重復(fù)進(jìn)行循環(huán)。
do
{要執(zhí)行的代碼;
}
while (條件);
實(shí)例 下面的實(shí)例首先設(shè)置變量 i 的值為 1 ($i=1;)。 然后,開始 do...while 循環(huán)。循環(huán)將變量 i 的值遞增 1,然后輸出。先檢查條件(i 小于或者等于 5),只要 i 小于或者等于 5,循環(huán)將繼續(xù)運(yùn)行
<html>
<body>
<?php
$i=1;
do
{$i++;echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>
</body>
</html>輸出:
The number is 2
The number is 3
The number is 4
The number is 5
The number is 6
3)For 循環(huán)
for 循環(huán)用于您預(yù)先知道腳本需要運(yùn)行的次數(shù)的情況。
語(yǔ)法:
for (初始值; 條件; 增量)
{要執(zhí)行的代碼;
}
參數(shù):
-
初始值:主要是初始化一個(gè)變量值,用于設(shè)置一個(gè)計(jì)數(shù)器(但可以是任何在循環(huán)的開始被執(zhí)行一次的代碼)。
-
條件:循環(huán)執(zhí)行的限制條件。如果為 TRUE,則循環(huán)繼續(xù)。如果為 FALSE,則循環(huán)結(jié)束。
-
增量:主要用于遞增計(jì)數(shù)器(但可以是任何在循環(huán)的結(jié)束被執(zhí)行的代碼)。
注釋:上面的初始值和增量參數(shù)可為空,或者有多個(gè)表達(dá)式(用逗號(hào)分隔)。
實(shí)例 下面的實(shí)例定義一個(gè)初始值為 i=1 的循環(huán)。只要變量 i 小于或者等于 5,循環(huán)將繼續(xù)運(yùn)行。循環(huán)每運(yùn)行一次,變量 i 就會(huì)遞增 1
?
<?php
for ($i=1; $i<=5; $i++)
{
echo "數(shù)字為 " . $i . PHP_EOL;
}
?>輸出:
數(shù)字為 1
數(shù)字為 2
數(shù)字為 3
數(shù)字為 4
數(shù)字為 5
4)foreach 循環(huán)
foreach 循環(huán)用于遍歷數(shù)組:
foreach ($array as $value)
{要執(zhí)行代碼;
}
每進(jìn)行一次循環(huán),當(dāng)前數(shù)組元素的值就會(huì)被賦值給 $value 變量(數(shù)組指針會(huì)逐一地移動(dòng)),在進(jìn)行下一次循環(huán)時(shí),您將看到數(shù)組中的下一個(gè)值。
foreach ($array as $key => $value)
{要執(zhí)行代碼;
}
實(shí)例:
<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{echo $value . PHP_EOL;
}
?>
下面的實(shí)例演示了一個(gè)輸出給定數(shù)組鍵與值的循環(huán):
<?php$x=array("Google", "Runoob","Taobao");foreach ($x as $value){echo " value 為 ". $value ;}
?>