搜尋
首頁php教程php手册php學習筆記之基礎知識

php學習至今一年有餘,筆記累積挺多的,也挺雜的,寫篇文章整理一下吧。

php基礎部分

<span style="font-family:新宋体">PHP</span>輸出文字的基礎指令:<span style="font-family:新宋体">echo</span><span style="font-family:新宋体">print</span>

echo和print的區別

<span style="font-family:新宋体">echo</span>是php語句, <span style="font-family:新宋体">print</span><span style="font-family:新宋体">print_r</span>是函數,語句沒有回傳值,函數可以有回傳值(即便沒有用)

<span style="font-family:新宋体">echo</span>輸出一個或多個字串。
<span style="font-family:新宋体">print</span>只能列印出簡單型別變數的值(如int,string)
<span style="font-family:新宋体">print_r</span>可以列印出複雜型別變數的值(如陣列,物件)

var_dump和print_r的區別

<span style="font-family:新宋体">var_dump</span>傳回表達式的類型和值,而<span style="font-family:新宋体">print_r</span>只傳回結果,相較於調試程式碼使用<span style="font-family:新宋体">var_dump</span>更便於閱讀。

變數

變數用於儲存值,例如數字、文字字串或陣列。 php 中的所有變數都是以 $ 符號開始的。
php 變數名稱對大小寫敏感!

php 有三種不同的變數作用域:

<code>local(局部)<br>global(全局)<br>static(静态)</code>

函數之外宣告的變數擁有 <span style="font-family:新宋体">Global</span>作用域,只能在函數以外進行存取。

函數內部宣告的變數擁有 <span style="font-family:新宋体">LOCAL</span>作用域,只能在函數內部存取。

<span style="font-family:新宋体">global</span>關鍵字用於存取函數內的全域變數。

php static 關鍵字

通常,當函數完成/執行後,會刪除所有變數。不過,有時我需要不刪除某個局部變數。實現這一點需要更進一步的工作。

要完成這一點,請在您首次宣告變數時使用static 關鍵字:

<code><?php     <br>function mytest() {<br>   static $x=-1;<br>   echo $x;<br>   $x--;<br>}<br>mytest();//-1<br>echo "<br>";<br>mytest();//-2<br>echo "<br>";<br>mytest();//-3<br>?></code>

php類型

php类型:**php 支持八种原始类型。**

布林型

要指定一個布林值,使用關鍵字true 或false。兩個都是大小寫不敏感的。

整數

我們可以使用(int)來將小數強制型別轉換成整數。

<code><?php <br>    var_dump((int)(26/3));//int(8)<br>?></code>

陣列

php中有三種陣列:

<code>索引数组:就是下标是顺序整数作为作为索引(比如第几排第几列)$class[5]<br>关联数组:就是下标是字符串作为索引(比如名字)$class2["zhangsan"]<br>多维数组 - 包含一个或多个数组的数组</code>

下標要嘛是整數,要嘛是字串。

<code><?php <br>$array = array(<br>    "foo" => "bar",<br>    "bar" => "foo",<br>);<br>// 自 php 5.4 起<br>$array = [<br>    "foo" => "bar",<br>    "bar" => "foo",<br>];<br>?></code>

陣列單元可以透過 <span style="font-family:新宋体">array[key]</span>語法來存取。
note: 這並不表示總是給鍵名加上引號。用不著給鍵名為常數或變數的加上引號,否則會使 <span style="font-family:新宋体">PHP</span>不能解析它們。

陣列運算子

範例名稱結果$a $b 聯合$a 和$b 的聯合$a == $b 相等如果$a 和$b 有相同的鍵/值對則為true$a === $b 全等如果$a 和$b 具有相同的鍵/值對且順序和類型都相同則為true$a != $b 不等如果$a 不等於$ b 則為true$a $b 不等若$a 不等於$b 則為true$a !== $b 不全等若$a 不全等於$b 則為true

tr>



<span style="font-family:新宋体">+</span>運算子把右邊的陣列元素附加到左邊的陣列後面,兩個陣列中都有的鍵名,則只用左邊數組中的,右邊的被忽略。

物件

要初始化一個對象,用 new 語句將物件實例到一個變數中。

常用函數

strlen() 函數用來計算字串的長度。
strpos() 函數用於在字串內檢索一段字串或一個字元。

常數

可以用 define() 函數來定義常數。一個常數一旦被定義,就不能再改變或取消定義。
常用的魔術常數:

php學習筆記之基礎知識echo poems ;//outputs "homeric epic"
?>

php字串運算子 p>

在php 中,只有一個字串運算子。
並置運算子 <span style="font-family:新宋体">(.)</span>用來把兩個字串值連接起來。如:echo "a= ".$a."<br>";
左邊將字串文字"a="與變數$a的值連接,第二處是與換行符<span style="font-family:新宋体">"<br>"</span>連接

php函數

函數只有在被呼叫時才會被執行,這點和js是一樣的,同樣,函數定義也是以function關鍵字開頭的。

<code><?php <br>    function sum($x,$y){<br>        $z=$x + $y;<br>        return $z;<br>    }<br>    echo "-2+10= ".sum(-2,10);//outputs "-2+10=8"<br>?></code>

當沒有<span style="font-family:新宋体">return</span>語句時,以上將會變成"-2 10=";

流程控制

在這裡,只講<span style="font-family:新宋体">foreach</span>語句。

<span style="font-family:新宋体">foreach</span>語句遍歷輸出數組:
語法:

foreach (array_expression as $value){ statement};
foreach (array_expression as $key => $value){ statement};

參數<span style="font-family:新宋体">array_expression</span>是指定要遍歷的數組,<span style="font-family:新宋体">$value</span>是數組的值

<code><?php <br>     $actors [0] ="marry";<br>     $actors [1] ="lorry";<br>     $actors [2] = "mike";<br>     foreach ($actors as $values){<br>     echo "name:$values<br>"; <br>}<br>?></code>

以上程式碼將輸出:
name:marry
name:lorry
name:mike

兩個重要的魔術方法

    1. __set( )方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你  要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。
    2. __get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用

php中方法不區分大小寫

require(dirname(__file__).'/global.php'); //引入全局文件
require(dirname(__file__).'/config.ini.php'); //引入基本配置文件

物件運算子與雙冒號運算子

在類別的成員方法裡面,可以用->(物件運算子):<span style="font-family:新宋体">$this->property</span>(其中property 是該屬性名)這種方式來存取非靜態屬性。
靜態屬性則是用 <span style="font-family:新宋体">::</span>(雙冒號):<span style="font-family:新宋体">self::$property</span>來存取。

=>和->

<span style="font-family:新宋体">=></span>陣列成員存取符號,<span style="font-family:新宋体">-></span>物件成員存取符號;
<span style="font-family:新宋体">$this</span>-<span style="font-family:新宋体">>$name=$value</span>:將目前類別的<span style="font-family:新宋体">name</span>變數的值設為<span style="font-family:新宋体">$value</span>;
<span style="font-family:新宋体">$this</span>代表了類別本身,<span style="font-family:新宋体">-></span>是存取其類別成員的運算子
雙冒號運算子(<span style="font-family:新宋体">::</span>)類別名稱<span style="font-family:新宋体">::</span>靜態屬性/方法
<span style="font-family:新宋体">::</span>」用來呼叫類別中靜態的屬性和方法

<span style="font-family:新宋体">include()</span>:包含外部文件,語法格式為include(string filename);
<span style="font-family:新宋体">require()</span>:會輸出錯誤訊息,終止腳本
<span style="font-family:新宋体">include_once()</span>:多次調用相同檔案時,程式只會呼叫一次
<span style="font-family:新宋体">require_once()</span>:先檢查檔案是否在其他地方被呼叫過
<span style="font-family:新宋体">array_pop()</span>:取得並傳回數組中的最後一個元素
<span style="font-family:新宋体">count()</span>:統計數組中的元素個數
<span style="font-family:新宋体">array_search()</span>:取得數組中元素的鍵名
<span style="font-family:新宋体">$array_keys()</span>:取得數組中重複元素的所有鍵名

單引號和雙引號

php把單引號中的資料視為普通字串,不再處理。而雙引號還要對其中的字串進行處理

get和post

$_get[ ]和$_post[ ]全域數組:分別用來接收get和post方法傳遞到目前頁面的資料。 「[ ]」裡面是name.

php參數傳遞常用的方法有3種:$_post[ ]、$_get[ ]、$_session[ ],分別用來取得表單、url與session變量的值。

表單提交中get和post方式的區別歸納如下幾點:

<code>GET是从服务器上获取数据,POST是向服务器传送数据。<br>GET 是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br>对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。<br>GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。<br>GET 安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记 录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一 同显示在用户面前。POST的所有操作对用户来说都是不可见的。</code>

在form提交的時候,如果不指定method,則預設為get請求(.net預設是post),form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣發送,但空格轉換為“ ” 號,其它符號轉換為%xx,其中xx為該符號以16進位表示的ascii(或iso latin-1)值。 get請求請提交的資料放置在http請求協定頭中,而post提交的資料則放在實體資料中;get方式提交的資料最多只能有2048字節,而post則沒有此限制。 post傳遞的參數在doc裡,也就http協定所傳遞的文本,接受時再解析參數部分。獲得參數。一般用post比較好。 post提交資料是隱式的,get是透過在url裡面傳遞的,用來傳遞一些不需要保密的數據,get是透過在url裡傳遞參數,post不是。

1.get請求的資料會附在url之後(就是把資料放置在http協定頭中),以?分割url和傳輸數據,參數之間以&連接

2.get方式提交的數據最多只能是1024字節,理論上post沒有限制,可傳較大量的數據,iis4中最大為80kb,iis5中為100kb

http狀態碼

cookie和session區別

cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。若不設定過期時間,表示這
個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就會消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不儲存在硬碟上而是儲存在記憶體裡,當然這種行為並不是規範規定的。若設定了過期時間,瀏覽器就會把cookie
儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效直到超過設定的過期時間。

當程式需要為某個客戶端的請求建立一個session時,伺服器先檢查這個客戶端的請求裡是否已包含了一個session標識
(稱為session id),如果已包含則表示以前已經為此客戶端創建過session,伺服器就按照session id把這個session檢索出來
使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且產生一個與此session相
關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次回應中返回給客戶端保存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給
伺服器。
1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙
考慮到安全應當使用session。
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能
考慮到減輕伺服器效能方面,應使用cookie。
4、單一cookie儲存的資料不能超過4k,很多瀏覽器都限制一個網站最多儲存20個cookie。
5、所以個人建議:
將登陸資訊等重要資訊存放為session
其他資訊如果需要保留,可以放在cookie中

php程式碼規格

1.變數賦值必須保持相等間距和排列

2.每行結尾不允許有多餘的空格

3.確保檔案的命名和呼叫大小寫一致,是由於類unix系統上面,對大小寫是敏感的

4.方法名只允許由字母組成,下劃線是不允許的,首字母要小寫,其後每個單字首字母要大寫

5.屬性的命名只允許由字母組成,下劃線是不允許的⋯⋯

6.對於物件成員的訪問,我們必須始終使用“get"和"set"方法

7.當類別成員方法被宣告為private時,必須以雙底線"__"開頭;被宣告為protected時,必須以單底線" _"開頭;宣告為public的成員屬性則在任何時間都不允許含有底線。

8.如果我們需要把一些常用的方法定義為全域函數,那麼就應該把它們以靜態(static)的形式定義在類別中

9.函數的命名使用小寫和底線,應該能夠描述清楚該函數的功能。

10.boolean值和null值都採用小寫。

11.當一個字串是純文字組成的時候(即不含有變數),則必須總是以單引號(')作為定界符

12.使用array類型宣告關聯數組的時候,應將它分成多行,確保每行的鍵與值的對齊

13.類別中所有程式碼都必須用四個空格進行縮排

14.不允許用var來宣告變量,類別成員變數必須以private,protected和public來宣告。通常用get和set方法來存取類別成員。

15.方法必須總是用private,protected或public來宣告其作用域

16.在函式或方法名稱與參數括號之間不允許出現多餘的空格

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器