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

php學習筆記之基礎知識

Jul 18, 2017 am 09:26 AM
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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles