php基礎知識(文法與原理)

來源:互聯網
上載者:User

標籤:之間   布爾   命名法   res   span   存在   print   組元   用戶端   

一、 php 簡介

PHP超文本前置處理器。是嵌入HTML檔案中的伺服器指令碼程式。

PHP代碼標記:<?php …. ?>

PHP檔案的副檔名:.php

PHP檔案的執行:必須從網域名稱開始訪問

PHP每條語句必須以英文(;)結束

二、 php網頁基礎知識 ①  IP 地址

IP地址分為v4、v6兩個版本,v4長度為32位2進位碼,v6為128位2進位碼。v4版本IP在2010年左右已經用完,主要格式是192.168.4.238(點分十進位法),由四段組成,每段8位二進位,用十進位表示的取值範圍為:0-255

特殊IP:127.0.0.1用於原生軟體測試或網站測試,只能自己訪問自己的127。

②  網域名稱解析器( DNS 伺服器)

可以理解為,儲存了網域名稱與IP地址對應表的資料庫

本地的DNS:hosts檔案,一個隱藏的系統檔案,沒有副檔名。當在瀏覽器中輸入欄位名時,首先在本地DNS尋找有無對應IP然後才在外網DNS尋找對應IP。hosts檔案的路徑:C:\Windows\System32\drivers\etc\hosts

③  網域名稱解析,訪問流程圖

三、 php 基礎文法 ①   php 變數

php變數必須以”$”開頭,例如:$name、$age

   不能以數字開頭,最後按照駝峰命名法

   寫在””引號中的變數最好用 { } 括起來,以免出現末端有字元不解析的情況

②  php 資料類型

純量資料型別:字串型、整型、浮點型、布爾型

   複合資料型別:數組、對象

   特殊資料類型:資源、NULL

(1) 整型

取值範圍:-21億~21億

(2) 浮點型   (可以包含整數)

取值範圍:-1.7E-308~1.7E+308

由於浮點數不能轉換成精確的二進位,所以有時在運輸時會出現錯誤,例如:(0.7+0.1)*10==8 結果為false

(3) 字串型 (在引號中,解析變數,需在變數後加上符合或者空格)
  1. 雙引號“”

雙引號內解析變數的值

  1. 單引號‘’

單引號內解析變數的名,直接在用戶端顯示$name

  1. 長字串

$Str = <<<heredoc   “heredoc”的名字可以隨意取,按照變數命名規則

 ……. 填寫字串內容

heredoc;   結尾“heredoc”必須另起一行,分號結束

(4) 資源型

對第三方外掛程式等的操作,如調用mysql資料庫等,第三方的內容稱之為資源

(5) 布爾型

只有true或false兩種類型值

(6) NULL (空型)

如果變數不存在,返回NULL,空型只有一個值,就是NULL

(7) 數組 (一組數的集合,通過索引尋找元素) a ) 數組的分類: 1.  索引數組   (與 js 數組基本相同)

數組的下標是從0開始的正整數,這樣的數組稱為“索引數組”

$arr=array(10,20,30,40);

$arr[0]=10;

2.關聯陣列

數組的下標是字串,這樣的數組稱為“關聯陣列”

$arr=array(“name”=>”Tabb”,”sex”=>”gender”,”age”=>”22”);

由於關聯陣列沒有整數型下標,所以不適合使用for迴圈來遍曆

3. 混合數組

數組下標既有整型,也有字串,這樣的數組稱為“混合數組”

$arr = array("name" => "tabb", "age" => "20", "tom", 20);

echo $arr[0] 輸出結果為“tom”;說明整型下標是從”tom”開始計算的

b ) 數組的建立:

1. 使用array()函數建立數組:

通過“=>”重載符號給數組元素指定下標

如果數組元素沒有指定下標,其下標為,當前最大索引+1,樣本:

$arr=array(20=>”tabb”,2=>”28”,20,”tom”) 其中”20”的索引為21,如果都是字元下標,那麼沒有指定下標的元素,索引從0開始

使用array建立數組:

$arr = array([$key=>]$value,[$key=>]$value,…);

2. 使用[ ]中括弧建立數組

$arr[“key”]=$value

不像js,可以不用先聲明一個空數組,如果指定的數組不存在,會自動建立數組

        [ ] 中括弧內容為空白時,建立數組

        $arr[ ]=30;

如果數組不存在,就會建立一個數組,並添加第一個元素

如果數組存在,添加數組的元素的下標,是數組中的最大整形下標+1

c ) 多維陣列:

array(array(1,2,3,4),1,2,3,array(1,2,3,4))

使用[ ]中括弧可以快速建立多維陣列:

$arr[ ][ ][ ][ ]=10; 快速建立一個4維數組

d ) 數組相關函數: 1.  print_r ( )

列印關於變數的易於理解的資訊

如果給出的數組或者對象,按照一定格式顯示鍵和元素

2. unset ( )

刪除數組元素,刪除的是數組元素的值,下標還存在,不同於js的長度不變,此處刪除元素後,數組長度發生變化

刪除變數

3. count ( )

計算數組中的單元數目或對象中的屬性個數

4. foreach ( )  只能用於遍曆數組

foreach( $arr as [$key=>]$value ){ } 如果是索引數組,[$key=>]這個內容可以不要

③  php 資料類型判斷

(1) var_dump()

列印變數的相關資訊,可以列印多個變數,用”,”逗號隔開

(2) is_*()  一組判斷變數類型的方法,返回一個布爾值

  1. is_bool():判斷變數是不是布爾型
  2. is_int():判斷變數是不是整型
  3. is_float ():判斷變數是不是浮點型
  4. is_numeric():判斷變數是不是數值型
  5. is_string():判斷變數是不是字串型
  6. is_array():判斷變數是不是數組型
  7. is_object():判斷變數是不是對象型
  8. is_null():判斷變數是不是空型
  9. is_resource():判斷變數是不是資源型

……

(3) isset()

檢測變數是否設定

傳回值:如果變數存在,且不等於NULL,返回true,否則,返回false

(4) empty ( )

檢測一個變數是否為空白,例如””,0,”0”,null,array(),var $var 以及沒有任何屬性的對象都將被認為是空,如果為空白,傳回值TRUE

④  資料類型的轉換

1)轉換為bool (bool)

$a = "0";

$result = (bool)$a;

var_dump($result)  結果為: bool(false)

這些資料轉換為bool值時為false:0、0.0、””、”0”、array()、null

資源類型轉換為bool永遠為true

2)轉換為整型數值 (int)  (int)$name

1.如果以數值開頭的字串,將整型部分轉換為整型數值,去除後面的字元

2.如果不是數值開頭的字串,轉換為0

3.bool值true轉換為1,false轉換為0,null轉換為0

3)轉換為浮點數值 (float)  (float)$name

1.如果以數值開頭的字串,將數字部分轉換為數值(包含浮點部分),去除後面的字元

2.如果不是數值開頭的字串,轉換為0

3.bool值true轉換為1,false轉換為0,null轉換為0

4)轉換為字串 (string)  (string)$name

1.null、false轉換為””,Null 字元串

2.true轉換為字串“1”

⑤  php 運算子

1)數值運算子(+-/*%++--

使用方法與js中的使用方法基本相同

2)字串運算子

“.”點運算子表示字串連結符,與js中用”+”號拼接字串類似

$a=”abc”;

$b=$a.100  或者使用”.=”表示自己與自己連結字串:$a.=100

3)賦值運算子(=+=-=*=/=%=)與js基本相同

4)比較子(><>=<===!====!==)與js基本相同

舉例:10==“10px”  結果為:true;在包含數位運算中“10px”會先轉換為數值

舉例:10===“10px”  結果為:false; 全等比較,包括資料類型

(5)    邏輯運算子(&&||!)與js基本相同

(6)    三元運算子(運算式?結果1:結果2)與js基本相同

(7)    運算子優先順序

 

⑥  php 擷取表單資料

 <form method="get" action="">

    使用者名稱:<input type="text" name="username">

密碼:<input type="text" name="password">

<input type="hidden" name="ac" value="login">  //隱藏欄位,向後端傳遞資訊

    <input type="submit">

</form>

(1) 超全域陣列變數:$_GET[ ]

擷取get方法提交的資料,存放到GET數組中

 array(2) { ["username"]=> string(6) "abcdef" ["password"]=> string(5) "12345" }

擷取其中的資料樣本:$username=$_GET[“name”]

(2) 超全域陣列變數:$_POST[ ]

擷取post方法提交的資料,存放到POST數組中

⑦  php 中的條件判斷 if switch js 基本相同

switch比if的效率高,主要用於取值判斷

⑧  php 中的迴圈語句

(1)while(條件判斷){ break }  js基本相同

(2)for(條件判斷){ }  js基本相同

(3)break語句 可以添加break 2表示跳出兩層迴圈

(4)continue語句 跳出本次迴圈,直接開始下次迴圈

⑨  php 中的拷貝傳值和引用傳地址

(1) 拷貝傳值

將一個變數的值,“複製”一份,傳遞給另一個變數,這兩個變數之間沒有關係,是相互獨立的兩個變數,修改其中一個變數,另一個變數不會變

php中屬於拷貝傳值的資料類型為:字元型、整型、浮點型、NULL、數組

(2) 引用傳地址

將一個變數的資料地址,“複製”一份,傳遞給另一個變數,這兩個變數指向的是“同一標物”,如果這個”標物”發送變化,兩個變數都會發送變化。所以修改一個變數的值,則另一個變數也會發生變化。

php中屬於引用傳地址的資料類型為:對象、資源

手動聲明引用傳地址:在引用變數前,加上“&”符號即可,這樣可以使所有的資料類型實現引用傳地址,樣本如下

$a=10;  $b=&$a;  這樣即是把$a的引用地址傳地給了$b

⑩  php 中的函數   js 基本相同

樣本如下:

function name ($name) {  //函數名不能相同,只能唯一存在,且不帶$符號

          echo “{$name}的年齡是20”;

    return;

}

1)函數的參數可以傳遞引用地址:

function test ( &$a,$b ){  //此處傳遞的是$a的引用路徑

          $arr[ ]=$abc;

}

2)函數的範圍:

全域變數:在函數外部定義的變數,網頁執行完消失

局部變數:在函數內部定義的變數,函數執行完消失

不同與js,在php中,全域變數不能直接在函數內部使用

php函數中使用global關鍵字聲明全域變數

使用global關鍵字,可以將一個變數,聲明為全域變數,這裡的全域變數不是js中認為的全域變數

global關鍵字的使用:

  1. global關鍵字,只能在函數內部使用。
  2. global關鍵字,不能一邊聲明全域變數,一邊賦值。不能有這樣的寫法:

global $a=10;

  1. global的真正含義,是“引用傳地址”,與js中的全域變數不同

3php日期時間函數:

1. date( );

echo date(“Y-m-d H:i:s”);   輸出時間,可改為Y年m月d日

2. time( );   時間戳記   1970年到當前的秒數(js是毫秒)

4include 文法結構

        描述:包含並運行指定檔案

        文法:include $filename 或者 include($filename);

        樣本:include “include/conn.php”;

5requrie 文法結構

        描述:包含並運行指定檔案

        文法:requrie $filename 或者 requrie ($filename);

        樣本:requrie “include/conn.php”;

注意:include與require都是包含並運行檔案,但是是有區別的。如果包含的檔案不存在,include將報一個警告錯誤,指令碼繼續向下運行。而require將報一個致命錯誤,指令碼將立即終止執行。

6header()

        描述:發送一個自訂的http報文,即:php返回的資料格式或字元集

        文法:void header( string $string)

        樣本:

※  header(“content-type:text/html;charset=utf-8”);

※  header(“location:http:www.baidu.com”);  //網頁跳轉

php基礎知識(文法與原理)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.