學習筆記之PHP 基礎

PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。


如果您的服務器支持 PHP,那麼您無需做任何事情。

只要創建 .php 文件,然後上傳到 web 目錄中即可。服務器會自動對它們進行解析。

您無需編譯或安裝任何額外的工具。

因爲 PHP 是免費的,大多數 web 主機都支持 PHP。


什麼是 PHP?

PHP 是 "PHP Hypertext Preprocessor" 的首字母縮略詞

PHP 是一種被廣泛使用的開源腳本語言

PHP 腳本在服務器上執行

PHP 沒有成本,可供免費下載和使用


什麼是 PHP 文件?

PHP 文件能夠包含文本、HTML、CSS 以及 PHP 代碼

PHP 代碼在服務器上執行,而結果以純文本返回瀏覽器

PHP 文件的後綴是 ".php"


PHP 能夠做什麼?

PHP 能夠生成動態頁面內容

PHP 能夠創建、打開、讀取、寫入、刪除以及關閉服務器上的文件

PHP 能夠接收表單數據

PHP 能夠發送並取回 cookies

PHP 能夠添加、刪除、修改數據庫中的數據

PHP 能夠限制用戶訪問網站中的某些頁面

PHP 能夠對數據進行加密

通過 PHP,您可以不受限於只輸出 HTML。您還能夠輸出圖像、PDF 文件、甚至 Flash 影片。您也可以輸出任何文本,比如 XHTML 和 XML。


基礎 PHP 語法

PHP 腳本可放置於文檔中的任何位置。

PHP 腳本以 <?php 開頭,以 ?> 結尾:

PHP 文件的默認文件擴展名是 ".php"。

PHP 文件通常包含 HTML 標籤以及一些 PHP 腳本代碼。

PHP 語句以分號結尾(;)。PHP 代碼塊的關閉標籤也會自動錶明分號(因此在 PHP 代碼塊的最後一行不必使用分號)。

PHP 支持三種註釋:// or # 單行註釋, /*     */  多行註釋

--====================================

例子:<!DOCTYPE html>

<html>

<body>


<h1>我的第一張 PHP 頁面</h1>


<?php

echo "Hello World!";

?>


</body>

</html>

--=========================================

PHP 大小寫敏感

在 PHP 中,所有用戶定義的函數、類和關鍵詞(例如 if、else、echo 等等)都對大小寫不敏感,也就是不區分大小寫。但是,在 PHP 中,所有變量都對大小寫敏感。


變量是存儲信息的容器:

PHP 變量規則:

變量以 $ 符號開頭,其後是變量的名稱

變量名稱必須以字母或下劃線開頭

變量名稱不能以數字開頭

變量名稱只能包含字母數字字符和下劃線(A-z、0-9 以及 _)

變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)

註釋:PHP 變量名稱對大小寫敏感!如果您爲變量賦的值是文本,請用引號包圍該值


PHP 是一門類型鬆散的語言;我們不必告知 PHP 變量的數據類型。

PHP 會根據它的值,自動把變量轉換爲正確的數據類型。

不用像 C 和 C++ 以及 Java 之類的語言那樣,程序員必須在使用變量之前聲明它的名稱和類型。


PHP 變量作用域

在 PHP 中,可以在腳本的任意位置對變量進行聲明。

變量的作用域指的是變量能夠被引用/使用的那部分腳本。

PHP 有三種不同的變量作用域:

local(局部)

global(全局)

static(靜態)


Local 和 Global 作用域

函數之外聲明的變量擁有 Global 作用域,只能在函數以外進行訪問。

函數內部聲明的變量擁有 LOCAL 作用域,只能在函數內部進行訪問。

下面的例子測試了帶有局部和全局作用域的變量:

<?php

$x=5; // 全局作用域


function myTest() {

  $y=10; // 局部作用域

  echo "<p>測試函數內部的變量:</p>";

  echo "變量 x 是:$x";

  echo "<br>";

  echo "變量 y 是:$x";


myTest();


echo "<p>測試函數之外的變量:</p>";

echo "變量 x 是:$x";

echo "<br>";

echo "變量 y 是:$x";

?>

--=========================================

global 關鍵詞用於訪問函數內的全局變量。

要做到這一點,請在(函數內部)變量前面使用 global 關鍵詞:


通常,當函數完成/執行後,會刪除所有變量。不過,有時我需要不刪除某個局部變量。實現這一點需要更進一步的工作。要完成這一點,請在您首次聲明變量時使用 static 關鍵詞:然後,每當函數被調用時,這個變量所存儲的信息都是函數最後一次被調用時所包含的信息。該變量仍然是函數的局部變量。


echo 和 print 之間的差異:

echo - 能夠輸出一個以上的字符串

print - 只能輸出一個字符串,並始終返回 1

提示:echo 比 print 稍快,因爲它不返回任何值。

echo 和print都是一個語言結構,有無括號均可使用:echo 或 echo()。


下面的例子展示如何用 echo 命令來顯示字符串和變量:

<?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]}";

?>

===============================================

PHP 數據類型:字符串、整數、浮點數、邏輯、數組、對象、NULL。

字符串是字符序列,比如 "Hello world!"。

字符串可以是引號內的任何文本。您可以使用單引號或雙引號:


PHP 整數

整數是沒有小數的數字。

整數規則:

整數必須有至少一個數字(0-9)

整數不能包含逗號或空格

整數不能有小數點

整數正負均可

可以用三種格式規定整數:十進制、十六進制(前綴是 0x)或八進制(前綴是 0)

在下面的例子中,我們將測試不同的數字。PHP var_dump() 會返回變量的數據類型和值:

<?php 

$x = 5985;

var_dump($x);

echo "<br>"; 

$x = -345; // 負數

var_dump($x);

echo "<br>"; 

$x = 0x8C; // 十六進制數

var_dump($x);

echo "<br>";

$x = 047; // 八進制數

var_dump($x);

?>

=======================================


浮點數是有小數點或指數形式的數字。

邏輯是 true 或 false

數組在一個變量中存儲多個值。

PHP 對象

對象是存儲數據和有關如何處理數據的信息的數據類型。

在 PHP 中,必須明確地聲明對象。

首先我們必須聲明對象的類。對此,我們使用 class 關鍵詞。類是包含屬性和方法的結構。

然後我們在對象類中定義數據類型,然後在該類的實例中使用此數據類型:

實例

<?php

class Car

{

  var $color;

  function Car($color="green") {

    $this->color = $color;

  }

  function what_color() {

    return $this->color;

  }

}

?>


PHP NULL 值

特殊的 NULL 值表示變量無值。NULL 是數據類型 NULL 唯一可能的值。

NULL 值標示變量是否爲空。也用於區分空字符串與空值數據庫。

可以通過把值設置爲 NULL,將變量清空:


===========================函數

strlen() 函數返回字符串的長度,以字符計。

例如返回字符串 "Hello world!" 的長度:echo strlen("Hello world!"); 結果是12

提示:strlen() 常用於循環和其他函數,在確定字符串何時結束很重要時。(例如,在循環中,我們也許需要在字符串的最後一個字符之後停止循環)。


strpos() 函數用於檢索字符串內指定的字符或文本。

如果找到匹配,則會返回首個匹配的字符位置。如果未找到匹配,則將返回 FALSE。

例如 echo strpos("Hello world!","world"); 輸出6,字符串 "world" 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1。

--=================常量

常量類似變量,但是常量一旦被定義就無法更改或撤銷定義。

有效的常量名以字符或下劃線開頭(常量名稱前面沒有 $ 符號)。註釋:與變量不同,常量貫穿整個腳本是自動全局的。

如需設置常量,請使用 define() 函數 - 它使用三個參數:

首個參數定義常量的名稱

第二個參數定義常量的值

可選的第三個參數規定常量名是否對大小寫敏感。默認是 false。


PHP 賦值運算符用於向變量寫值。

PHP 中基礎的賦值運算符是 "="。這意味着右側賦值表達式會爲左側運算數設置值。

x=y 等同於x=y

x+=y  等同於 x=x+y 加

x-=y  等同於 x=x-y 減

x*=y  等同於 x=x*y  乘

x/=y  等同於 x=x/y  除

x%=y  等同於 x=x%y  模數

--PHP 字符串運算符( .串接) (.=串接賦值)

<?php

$a = "Hello";

$b = $a . " world!";

echo $b; // 輸出 Hello world!


$x="Hello";

$x .= " world!";

echo $x; // 輸出 Hello world!

?>

--===========PHP 遞增/遞減運算符

運算符 名稱 描述

++$x 前遞增 $x 加一遞增,然後返回 $x

$x++ 後遞增 返回 $x,然後 $x 加一遞增

--$x 前遞減 $x 減一遞減,然後返回 $x

$x-- 後遞減 返回 $x,然後 $x 減一遞減


比較運算符 名稱 例子 結果

== 等於 $x == $y 如果 $x 等於 $y,則返回 true。

=== 全等(完全相同) $x === $y 如果 $x 等於 $y,且它們類型相同,則返回 true。

!= 不等於 $x != $y 如果 $x 不等於 $y,則返回 true。

<> 不等於 $x <> $y 如果 $x 不等於 $y,則返回 true。

!== 不全等(完全不同) $x !== $y 如果 $x 不等於 $y,且它們類型不相同,則返回 true。

> 大於 $x > $y 如果 $x 大於 $y,則返回 true。

< 大於 $x < $y 如果 $x 小於 $y,則返回 true。

>= 大於或等於 $x >= $y 如果 $x 大於或者等於 $y,則返回 true.

<= 小於或等於 $x <= $y 如果 $x 小於或者等於 $y,則返回 true。


PHP 邏輯運算符

運算符 名稱 例子 結果

and $x and $y 如果 $x 和 $y 都爲 true,則返回 true。

or $x or $y 如果 $x 和 $y 至少有一個爲 true,則返回 true。

xor 異或 $x xor $y 如果 $x 和 $y 有且僅有一個爲 true,則返回 true。

&& $x && $y 如果 $x 和 $y 都爲 true,則返回 true。

|| $x || $y 如果 $x 和 $y 至少有一個爲 true,則返回 true。

! !$x 如果 $x 不爲 true,則返回 true。


PHP 數組運算符

PHP 數組運算符用於比較數組:

實例

<?php

$x = array("a" => "red", "b" => "green"); 

$y = array("c" => "blue", "d" => "yellow"); 

$z = $x + $y; // $x 與 $y 的聯合

var_dump($z);

var_dump($x == $y); // $x 與 $y 的相等

var_dump($x === $y); // $x 與 $y 的全等

var_dump($x != $y); // $x 與 $y 的不相等

var_dump($x <> $y); // $x 與 $y 的不相等

var_dump($x !== $y);// $x 與 $y 的不全等

?>


--===========

在 PHP 中,我們可以使用以下條件語句:

if 語句 - 如果指定條件爲真,則執行代碼

if...else 語句 - 如果條件爲 true,則執行代碼;如果條件爲 false,則執行另一端代碼

if...elseif....else 語句 - 選擇若干段代碼塊之一來執行

----------------------------

switch 語句 - 語句多個代碼塊之一來執行

Switch 語句

如果您希望有選擇地執行若干代碼塊之一,請使用 Switch 語句。

使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。

工作原理:

對表達式(通常是變量)進行一次計算

把表達式的值與結構中 case 的值進行比較

如果存在匹配,則執行與 case 關聯的代碼

代碼執行後,break 語句阻止代碼跳入下一個 case 中繼續執行

如果沒有 case 爲真,則使用 default 語句

實例

<?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 中,我們有以下循環語句:

while - 只要指定條件爲真,則循環代碼塊

do...while - 先執行一次代碼塊,然後只要指定條件爲真則重複循環

for - 循環代碼塊指定次數

foreach - 遍歷數組中的每個元素並循環代碼塊

PHP while 循環

只要指定的條件爲真,while 循環就會執行代碼塊。

語法

while (條件爲真) {

  要執行的代碼;

}


PHP do...while 循環

do...while 循環首先會執行一次代碼塊,然後檢查條件,如果指定條件爲真,則重複循環。

語法

do {

  要執行的代碼;

} while (條件爲真);

--請注意,do while 循環只在執行循環內的語句之後纔對條件進行測試。這意味着 do while 循環至少會執行一次語句,即使條件測試在第一次就失敗了。


PHP for 循環

如果您已經提前確定腳本運行的次數,可以使用 for 循環。

語法

for (init counter; test counter; increment counter) {

  code to be executed;

}

參數:

init counter:初始化循環計數器的值

test counter:: 評估每個循環迭代。如果值爲 TRUE,繼續循環。如果它的值爲 FALSE,循環結束。

increment counter:增加循環計數器的值

下面的例子顯示了從 0 到 10 的數字:

實例

<?php 

for ($x=0; $x<=10; $x++) {

  echo "數字是:$x <br>";

?>


PHP foreach 循環

foreach 循環只適用於數組,並用於遍歷數組中的每個鍵/值對。

語法

foreach ($array as $value) {

  code to be executed;

}

每進行一次循環迭代,當前數組元素的值就會被賦值給 $value 變量,並且數組指針會逐一地移動,直到到達最後一個數組元素。

下面的例子演示的循環將輸出給定數組($colors)的值:

實例

<?php 

$colors = array("red","green","blue","yellow"); 


foreach ($colors as $value) {

  echo "$value <br>";

}

?>


PHP 的真正力量來自它的函數:它擁有超過 1000 個內建的函數。

PHP 用戶定義函數

除了內建的 PHP 函數,我們可以創建我們自己的函數。

函數是可以在程序中重複使用的語句塊。

頁面加載時函數不會立即執行。

函數只有在被調用時纔會執行。

註釋:函數名能夠以字母或下劃線開頭(而非數字)。

註釋:函數名對大小寫不敏感。

提示:函數名應該能夠反映函數所執行的任務。

在下面的例子中,我們創建名爲 "writeMsg()" 的函數。打開的花括號({)指示函數代碼的開始,而關閉的花括號(})指示函數的結束。此函數輸出 "Hello world!"。如需調用該函數,只要使用函數名即可:

實例

<?php

function writeMsg() {

  echo "Hello world!";

}


writeMsg(); // 調用函數

?>


PHP 函數參數

可以通過參數向函數傳遞信息。參數類似變量。

參數被定義在函數名之後,括號內部。您可以添加任意多參數,只要用逗號隔開即可。

PHP 默認參數值

下面的例子展示瞭如何使用默認參數。如果我們調用沒有參數的 setHeight() 函數,它的參數會取默認值:

實例

<?php

function setHeight($minheight=50) {

  echo "The height is : $minheight <br>";

}


setHeight(350);

setHeight(); // 將使用默認值 50

setHeight(135);

setHeight(80);

?>

--==================

PHP 函數 - 返回值

如需使函數返回值,請使用 return 語句:

實例

<?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 中創建數組

在 PHP 中, array() 函數用於創建數組:

在 PHP 中,有三種數組類型:

索引數組 - 帶有數字索引的數組

關聯數組 - 帶有指定鍵的數組

多維數組 - 包含一個或多個數組的數組

count() 函數用於返回數組的長度(元素數):

-------------------------------------------

遍歷索引數組

如需遍歷並輸出索引數組的所有值,您可以使用 for 循環,就像這樣:

實例

<?php

$cars=array("Volvo","BMW","SAAB");

$arrlength=count($cars);


for($x=0;$x<$arrlength;$x++) {

  echo $cars[$x];

  echo "<br>";

---------------------------------------------

PHP 關聯數組

關聯數組是使用您分配給數組的指定鍵的數組。

隨後可以在腳本中使用指定鍵:

實例

<?php

$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");

echo "Peter is " . $age['Peter'] . " years old.";

?>


--==============================

數組中的元素能夠以字母或數字順序進行升序或降序排序。

PHP - 數組的排序函數

在本節中,我們將學習如下 PHP 數組排序函數:

sort() - 以升序對數組排序

rsort() - 以降序對數組排序

asort() - 根據值,以升序對關聯數組進行排序

ksort() - 根據鍵,以升序對關聯數組進行排序

arsort() - 根據值,以降序對關聯數組進行排序

krsort() - 根據鍵,以降序對關聯數組進行排序


-----------------------------------------

PHP 全局變量 - 超全局變量

PHP 中的許多預定義變量都是“超全局的”,這意味着它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以訪問它們。

這些超全局變量是:

$GLOBALS

$_SERVER 這種超全局變量保存關於報頭、路徑和腳本位置的信息。

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

---------------------------------------實例:------------------------

元素/代碼 描述

$_SERVER['PHP_SELF'] 返回當前執行腳本的文件名。

$_SERVER['GATEWAY_INTERFACE'] 返回服務器使用的 CGI 規範的版本。

$_SERVER['SERVER_ADDR'] 返回當前運行腳本所在的服務器的 IP 地址。

$_SERVER['SERVER_NAME'] 返回當前運行腳本所在的服務器的主機名(比如 www.w3school.com.cn)。

$_SERVER['SERVER_SOFTWARE'] 返回服務器標識字符串(比如 Apache/2.2.24)。

$_SERVER['SERVER_PROTOCOL'] 返回請求頁面時通信協議的名稱和版本(例如,“HTTP/1.0”)。

$_SERVER['REQUEST_METHOD'] 返回訪問頁面使用的請求方法(例如 POST)。

$_SERVER['REQUEST_TIME'] 返回請求開始時的時間戳(例如 1577687494)。

$_SERVER['QUERY_STRING'] 返回查詢字符串,如果是通過查詢字符串訪問此頁面。

$_SERVER['HTTP_ACCEPT'] 返回來自當前請求的請求頭。

$_SERVER['HTTP_ACCEPT_CHARSET'] 返回來自當前請求的 Accept_Charset 頭( 例如 utf-8,ISO-8859-1)

$_SERVER['HTTP_HOST'] 返回來自當前請求的 Host 頭。

$_SERVER['HTTP_REFERER'] 返回當前頁面的完整 URL(不可靠,因爲不是所有用戶代理都支持)。

$_SERVER['HTTPS'] 是否通過安全 HTTP 協議查詢腳本。

$_SERVER['REMOTE_ADDR'] 返回瀏覽當前頁面的用戶的 IP 地址。

$_SERVER['REMOTE_HOST'] 返回瀏覽當前頁面的用戶的主機名。

$_SERVER['REMOTE_PORT'] 返回用戶機器上連接到 Web 服務器所使用的端口號。

$_SERVER['SCRIPT_FILENAME'] 返回當前執行腳本的絕對路徑。

$_SERVER['SERVER_ADMIN'] 該值指明瞭 Apache 服務器配置文件中的 SERVER_ADMIN 參數。

$_SERVER['SERVER_PORT'] Web 服務器使用的端口。默認值爲 “80”。

$_SERVER['SERVER_SIGNATURE'] 返回服務器版本和虛擬主機名。

$_SERVER['PATH_TRANSLATED'] 當前腳本所在文件系統(非文檔根目錄)的基本路徑。

$_SERVER['SCRIPT_NAME'] 返回當前腳本的路徑。

$_SERVER['SCRIPT_URI'] 返回當前頁面的 URI。

------------------------------------------------------------------------


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章