標籤:固定 工具 AC this 十六進位 處理 數字 字串類型 orm
學習要點
學習目標
- 掌握PHP基礎文法
- 掌握PHP變數
- 掌握PHP常量
- 掌握PHP運算式
- 掌握PHP運算子
初識PHP第一個PHP程式
1、使用記事本編寫代碼,儲存為hello.php。
2、檔案儲存在D:\wamp\www目錄
3、IE地址欄訪問:http://localhost:80/hello.php
1、所有php代碼以<?php開頭,以?>結尾(可省略)。
2、echo是php用來輸出字串的語句。“echo — Output one or more strings“;
- echo是一個語言結構而非函數,因此它無法被變數函數調用。
- 多個參數,則不能用小括弧。使用“.”串連。
- 格式:void echo ( string $arg1 [, string $... ] )
3、每條語句以“;“號結束。?>隱含分號,所以最後一句指定可以不使用“;”。
4、檔案尾碼名必須以php結尾。當我們向伺服器調用hello.php檔案時候,伺服器就會自動給php尾碼的檔案需要提交給php功能模組處理,處理結果再返回給用戶端瀏覽器。
PHP處理HTML表單
表單頁面代碼:
<fieldset> <legend>使用者資訊</legend> <form action="D02Action.php" method="post"> <p> <label for="userName">姓名:</label> <input type="text" name="userName" id="userName"> </p> <p> <label for="userLocal">來自:</label> <input type="text" name="userLocal" id="userLocal"> </p> <p> <input type="submit" value="提交"> <input type="reset" value="重設"> </p> </form> </fieldset>
表單處理頁面代碼:
大家好,我的名字叫:<?php echo $_POST[‘userName‘];?><br>我來自:<?php echo $_POST[‘userLocal‘];?>
1、必須在伺服器環境中運行表單頁面和表單處理頁面。
2、$_post為PHP的全域變數,所有以post方式提交的資料都儲存在這個變數中。
3、php處理多選框checkbox的方法涉及到php數組概念,後續課程講解。
上機練習01 PHP處理表單資料
基礎文法PHP分隔字元
因為PHP是嵌入式指令碼語言,所以需要某種標記把PHP代碼和HTML代碼隔離開來,這種標記就是PHP分隔字元:
- <?php PHP代碼 ?> //XML風格,標準用法,推薦使用
- <script language=”php”> PHP代碼 </script> //長風格標記
- <? PHP代碼 ?> //簡短風格標記,需要在php.ini中開啟short_open_tag
- <% PHP代碼 %> //ASP風格標記,需要在php.ini中開啟asp_tags
伺服器端的PHP解析器將解析分隔字元中的代碼,分隔字元之外的代碼被忽略。解析完成後產生完整HTML頁面返回給用戶端瀏覽器。
PHP注釋
- //單行注釋
- #號單行注釋
- /**/多行注釋
- /**
*PHPDocumentor注釋。PHPDocumentor工具可以對代碼注釋自動產生代碼。
*/
樣本:
<?phpecho "第1行PHP代碼<br>";//單行注釋//echo "第2行PHP代碼<br>";//代碼注釋echo "第3行PHP代碼<br>";/** 多行注釋@param 意義 */echo "第4行PHP代碼<br>";/* * 多行注釋 */echo "第5行PHP代碼<br>";#單行注釋echo "第6行PHP代碼<br>";echo "第7行PHP代碼<br>";?>
空白符處理
空白符:空格、Tab定位字元、換行
1.一個源檔案的兩個程式碼片段之間。
2.兩個類的聲明之間。
1.兩個函式宣告之間。
2.函數內的局部變數和函數的第一條語句之間。
3.塊注釋或單行注釋之前。
4.一個函數內的兩個邏輯程式碼片段之間。
1.空格一般應用於關鍵字與括弧之間。注意:函數名稱與左括弧之間不應該用空格分開。
2.在函數的參數列表中的逗號後面插入空格。
3.數學算式的運算元與運算子之間應該添加空格(二進位運算與一元運算除外)。
4.for語句中的運算式應該用逗號分開,後面添加空格。
5.強制類型轉換語句中的強制類型的右括弧與運算式之間應該用逗號隔開,並添加空格。
PHP資料類型
PHP屬於弱類型語言,變數的資料類型不必由開發人員指定,而是由程式執行過程中根據上下文環境決定變數的資料類型。
PHP變數的資料類型可以分為:
- 標量類型:整數類型、浮點類型、字串類型、布爾類型。
- 複合類型:數群組類型和物件類型。
- 特殊類型:resource、NULL
- 偽類型:mixed,number,callback
如果要查看某個運算式的值和類型,可以使用函數var_dump()。
1.整數類型:integer
$i = 123;//十進位整數$i = -123;//指定一個負數$i = 076;//指定一個八位元$i = 0x7A;//指定一個十六進位數
2.浮點類型:float
兩種表示形式
$f = 1.23;$f = 1.23e3;//1.23*10*10*10=1230$f = 1.23E-3;//1.23/1000=0.00123
3.字串類型:string
$s = “php string”;或者 $s = ‘php string’;
單引號和雙引號字串的區別:
- 雙引號字串中如果有變數,則變數會被實際值替換。明確表示字串中的變數:${var}或者{$var}。
- 單引號字串則不會替換變數字元,也不會對“\”和“’”之外的字元轉義。PHP高效處理字串,推薦使用。
定界符定義字串(不能初始化類成員):
$string=<<<STR 定界符…..STR;Echo $string;
定界符中的變數也會被解析。通常用來從檔案或者資料庫中輸出大段文本。通常不需要使用逸出字元,但也可以在雙引號中使用。
PHP中的逸出字元及說明:
特殊字元 |
含義 |
\r |
指定斷行符號符號 |
\n |
指定分行符號號 |
\t |
指定製表符 |
\\ |
指定\ |
\$ |
指定貨幣符號 |
\” |
指定“號 |
PHP中的字串串連採用“.”號:$str1.$str2。
4.布爾類型:boolean
$flag = true;$falg = FALSE;//true或false值不區分大小寫;true為1,false為0
5.數群組類型:array
PHP數組定義:
$arr = array(“spring”,”summer”,”fall”,”winter”);
訪問數組,通過下標(也稱為:索引、鍵)訪問:
echo $arr[1];
另一種訪問數組方式,通過字串索引訪問(也稱為關聯陣列訪問):
數組定義:key
$arr = array(“sp”=>“spring”,”su”=>”summer”,”fa”=>”fall”,”wi”=>”winter”);
訪問:$arr[“sp”]
6.物件類型:object
由一組屬性值和一組方法構成。
<?phpclass Person{ var $name; function say(){ echo "我的名字是:".$this->name; }}$p=new Person();$p->name="tom";$p->say();?>
7.資源類型:resource
資源是一種特殊類型的變數,保持了到外部資源的一個引用。通過專門函數建立和使用,包括:開啟檔案、資料庫連接、圖形畫布地區等的特殊控制代碼,由程式員建立、使用和釋放。系統有記憶體回收機制。free-result函數用來手工釋放資源。
如下語句,如果資源建立成功,則返回資源引用,否則返回false。
<?php//檔案資源$file_handle=fopen("info.txt", "w");var_dump($file_handle);//輸出resource(3, stream) //目錄資源$dir_handle=opendir("c:\\WINDOWS\\Fonts");var_dump($dir_handle);//輸出resource(4, stream) //資料庫連接資源$link_mysql=mysqli_connect("localhost","root","rootkit");var_dump($link_mysql);//輸出object(mysqli)[1]... //畫板資源$img_handle=imagecreate(100, 100);var_dump($img_handle);//輸出resource(6, gd) //XML解析器資源$xml_parser=xml_parser_create();var_dump($xml_parser);//輸出resource(7, xml)?>
8.NULL類型
表示一個變數沒有值。不表示空格、0、以及Null 字元串。表示一個變數的值為空白。
NULL值的情況:
- 將變數值直接賦值為NULL。
- 聲明的變數尚未被賦值。
- 被unset()函數銷毀的變數。
- empty($var):
bool empty ( mixed $var )
如果 var 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果 var 為空白,則返回 TRUE。
樣本:
<?php$a=null;$b="tom";unset($b); var_dump($a);//輸出nullvar_dump($b);//輸出nullvar_dump($c);//輸出null?>
9.偽類介紹
主要用在函數的參數中,用來接收多種類型的資料,甚至是其他函數作為回呼函數使用。
mixed:一個參數可以接受多種不同的類型。
Number:一個參數可以是integer或者float。
Callback:可以是一個自訂函數或內建函數,或者對象的方法作為參數。除了array(),echo(),empty(),eval(),exit(),isset(),list(),print(),unset()。
上機練習2 輸出商品購物清單
PHP資料類型轉換
資料類型轉換分為:強制類型轉換和自動類型轉換。
PHP弱類型變數,所以變數的類型預設都是自動轉換。
標量參與自動類型轉換。注意:類型轉換並不改變運算數本身的類型,改變的僅是這些運算數如何被求值。
Boolean,null,string,integer 轉換為integer進行計算
Boolean,null,string,integer,float 轉換為float進行計算
Boolean轉換為0或者1
Null轉換為0
Integer轉換為float
字串轉換:123abc轉為123;123.14abc轉換為123.14。
<?php$var="100page";$var+=2;$var=$var+1.3;$var=null+"10 pices Paper";$var=5+"10.123 yuan";?>
1、括弧強制類型轉換
(int),(integer)
(bool),(boolean)
(float),(double),(real)
(string)
(array)
(object)
2、函數類型轉換
Intval()
Floatval()
Strval()
3、以上兩種類型轉換並不改變變數本身的類型,而是新類型賦給新變數進行計算。如果要改變,則使用settype()函數來設定變數的類型。
例如:
$var=”ture”;Settype($var,”string”);
1.整數轉浮點數,精度不變。
2.浮點數轉整數,自動捨棄小數部分。確保浮點數的範圍沒有超過整數範圍,否則結果不確定。
3.Null轉換為字串,則為空白字元“”。
變數變數的聲明
變數是記憶體中儲存資料的地址別名。
變數的聲明必須使用 $ 符號開頭,後面跟上變數名,使用“ =” 對變數賦值。
變數的範圍:函數局部變數範圍在函數內部。如果不是函數內部變數,則範圍在php標記開始和結束之間,以及頁面中所有開啟的php標記中使用,也包括include和require引入的檔案中。如果把變數放在cookie或者session中,則多個頁面都可以訪問變數。
常用變數測試函數:
Unset():釋放指定變數
Isset():檢測變數是否設定
Empty():檢測一個變數是否為空白
例如:
$var=’’;Empty($var);Isset($var);Unset($var);
推薦使用!empty($var)判斷變數存在且不可為空。
變數的命名
嚴格區分大小寫。但是內建結構、內建函數、自訂函數以及關鍵字不區分大小寫。
變數名規範:
字元或者底線開頭,後頭跟上任意數量的字母、數字或者底線。 中間不能有空格和點。駱駝命名法則。
可變變數
動態設定和改變變數的變數名。
例如:
$hi=”hello”;$$hi=”PHP”; //$$hi等價於$hello
變數的引用賦值
變數總是傳值賦值。意味著兩個變數相互賦值,改變其中一個變數的值將不會影響另一個變數的值,兩個變數的值存在複製。
引用賦值:所有變數指向同一個數值。改變值,所有變數值發生改變。使用&符號。
例如:
$foo=’bob’;$bar=&$foo;
$bar=’my name is tom’;//此時$foo的值變成多少?
與c語言&區別。C語言中&表示變數共體。Php中不會導致共體,只是把各自的值相關聯起來。使用uset()不會導致所有引用變數消失。
變數類型的測試函數
Var_dump():查看某個運算式的值和類型
Gettype():確定變數類型傳回型別名稱。
返回true或者false的is_type函數。
- Is_bool():判斷是否是布爾型
- Is_int(),is_integer(),is_long():判斷是否是整型
- Is_float(),is_double(),is_real():判斷是否是浮點型
- Is_string():判斷是否是字串
- Is_array():判斷是否是數組
- Is_object():判斷是否是對象
- Is_resource():判斷是否是資源類型
- Is_null():判斷是否為空白
- Is_scalar():判斷是否是標量
- Is_numeric():判斷是否是任何類型的數字或者數字字串
- Is_callable():判斷是否是有效函數名。
常量
用於資料計算中固定的值,一旦定義,程式運行過程中不能改變的量。一般是全域範圍。只能是變數資料聲明成常量。
define(string name,mixed value [,bool case_insensitive]);//定義常量函數
第一個參數:常量名,不需要$符號
第二個參數:常量值
第三個參數:如果為true,常量不區分大小寫,如果為false,則區分。
1. 常量前面沒有貨幣符號($)
2. 常量只能用 define() 函數定義,而不能通過指派陳述式
3. 常量可以不用理會變數範圍的規則而在任何地方定義和訪問
4. 常量一旦定義就不能被重新定義或者取消定義
5. 常量的值只能是標量
1.核心預定義常量:是在PHP的核心中就定義好了的常量。區分大小寫。
2.PHP_VERSION:返回PHP的版本。
3.PHP_OS:返回執行PHP解譯器的作業系統名稱。
4.PHP_EOL:系統分行符號,Windows是(\r\n),Linux是(\n),MAC是(\r)。
- 標準預定義常量:PHP預設定義的常量。區分大小寫。
M_PI:返回圓周率π的值。
例如:
<?php echo ‘PHP常用的預定義常量‘.‘<br><br>‘; echo ‘當前php的版本為(PHP_VERSION):‘.PHP_VERSION.‘<br><br>‘; echo ‘當前所使用的作業系統類型(PHP_OS):‘.PHP_OS.‘<br><br>‘; echo ‘web伺服器與PHP之間的介面為(PHP_SAPI):‘.PHP_SAPI.‘<br><br><br>‘; echo ‘最大的整型數(PHP_INT_MAX):‘.PHP_INT_MAX.‘<br><br>‘; echo ‘php預設的包含路徑(DEFAULT_INCLUDE_PATH):‘.DEFAULT_INCLUDE_PATH.‘<br><br>‘; echo ‘pear的安裝路徑(PEAR_INSTALL_DIR):‘.PEAR_INSTALL_DIR.‘<br><br>‘; echo ‘pear的擴充路徑(PEAR_EXTENSION_DIR):‘.PEAR_EXTENSION_DIR.‘<br><br>‘; echo ‘php的執行路徑(PHP_BINDIR):‘.PHP_BINDIR.‘<br><br>‘; echo ‘php擴充模組的路徑為(PHP_LIBDIR):‘.PHP_LIBDIR.‘<br><br>‘; echo ‘指向最近的錯誤處(E_ERROR):‘.E_ERROR.‘<br><br>‘; echo ‘指向最近的警告處(E_WARNING):‘.E_WARNING.‘<br><br>‘; echo ‘指向最近的注意處(E_NOTICE):‘.E_NOTICE.‘<br><br>‘; echo ‘自然對數e值(M_E):‘.M_E.‘<br><br>‘; echo ‘數學上的圓周率的值(M_PI):‘.M_PI.‘<br><br>‘; echo ‘邏輯真值(TRUE):‘.TRUE.‘<br><br>‘; echo ‘邏輯假值(FALSE):‘.FALSE.‘<br><br>‘; echo ‘當前檔案行數(__LINE__):‘.__LINE__.‘<br><br>‘; //是兩個底線 echo ‘當前檔案路徑名(__FILE__):‘.__FILE__.‘<br><br>‘; echo ‘<br>‘.‘當前被調用的函數名(__FUNCTION__):‘.__FUNCTION__.‘<br><br>‘; echo ‘類名(__CLASS__):‘.__CLASS__.‘<br><br>‘; echo ‘類的方法名(__METHOD__):‘.__METHOD__.‘<br><br>‘;?>
根據他們的使用位置而值發生改變。
- __LINE__ :返迴文件中的當前行號。也可寫成__line__。
- __FILE__:返回當前檔案的絕對路徑(包含檔案名稱)。
- __DIR__:返回當前檔案的絕對路徑(不包含檔案名稱),等價於 dirname(__FILE__)。
- __FUNCTION__:返回當前函數(或方法)的名稱。
- __CLASS__:返回當前的類名(包括該類的作用地區或命名空間)。
- __TRAIT__:返回當前的trait名稱(包括該trait的作用地區或命名空間)。
- __METHOD__:返回當前的方法名(包括類名)。
- __NAMESPACE__:返回當前檔案的命名空間的名稱。
運算子按運算元分類
一元運算子:!true //操作符+運算元
二元運算子:$a+$b //運算元+操作符+運算元
三元運算子:true?1:0; // 運算式+操作符+運算式+操作符+運算式
按功能分類
備忘:另外還有++,--,遞增遞減運算子
PHP 賦值運算子用於向變數寫值。
PHP 中基礎的賦值運算子是 "="。這意味著右側賦值運算式會為左側運算數設定值。
PHP 比較子用於比較兩個值(數字或字串):
位元運算符允許對整型數中指定的位進行求值和操作。
位移在 PHP 中是數學運算。向任何方向移出去的位都被丟棄。左移時右側以零填充,符號位被移走意味著加號或減號不被保留。右移時左側以符號位填充,意味著加號或減號被保留。
要用括弧確保想要的優先順序。例如 $a & $b == true 先進行比較再進行按位與;而 ($a & $b) == true 則先進行按位與再進行比較。
1.三元運算子:(?:)
2.執行運算子:(``)反引號。表示裡面的內容作為作業系統命令來執行,並將其輸出資訊返回。效果與函數shell_exec()相同。為了保持跨平台,盡量使用函數。
3.錯誤控制符:用來屏蔽運算式產生的錯誤資訊。經常放在——如果某處能獲得值,就在他前面加@符號。例如:@$sum=100/0;
上機練習3:輸入一個5位元字,計算各位元字之和
提示:表單輸入數字,處理頁面處理數字並輸出。
運算式
運算式是變數、常量、運算子號的組合。
- 最基本運算式是常量和變數:$a=5
- 稍微複雜一點的運算式是函數:$a=func();
- 遞增遞減運算式:$a++,--$a;
- 比較運算式:$a>5
- 組合運算賦值運算式:$a+=5;
- 三元運算運算式:$v=($a?$b=5:$c=10);
PHP05 PHP語言基礎