雖然說已經工做,而且也作了兩個項目,但總以爲本身的基礎知識不牢固,因此從頭開始學起。學習過程當中的一些代碼已上傳到 Github 和 碼雲php
略。。。git
略。。。github
XML 風格windows
<?php echo "這是 XML 風格"; ?>
腳本風格數組
<script language="php"> echo "這是腳本風格"; </script>
簡短風格服務器
<? echo "這是簡短風格"; ?>
ASP 風格cookie
<% echo "這是 ASP 風格"; %>
若是使用簡短風格和 ASP 風格,須要在 php.ini 中進行設置,將 short_open_tag 和 asp_tags 設置爲 ON,重啓 Apache 服務器session
推薦使用 XML 風格函數
單行註釋學習
<?php // 單行註釋 ?>
<?php # Shell 風格的單行註釋 ?>
多行註釋
<?php /* 多行註釋 多行註釋 多行註釋 */ ?>
單行註釋中不容許出現 ?> PHP 結束標籤
多行註釋中不容許出現 */ 多行註釋結束標籤
PHP 中數據類型能夠分爲三類:標量類型、複合類型、特殊類型
布爾類型
布爾類型只有兩個值:真(true),假(false),一般使用在條件控制或循環控制語句的條件表達式中
PHP 中能夠自動轉換爲假(false)的值:0, 0.0, "0", "", []
字符串類型
字符串就是連續出現的字符序列。PHP 支持四種定義字符串的方式:單引號('),雙引號("),heredoc 語法結構,nowdoc 語法結構
<?php echo '字符串'; ?>
<?php echo "字符串"; ?>
若是字符串包含在雙引號(")中,能夠對變量和一些特殊字符進行解析
# | 含義 |
---|---|
\n | 換行(new line) |
\r | 回車 |
\t | 水平製表符 |
\v | 垂直製表符 |
\e | Escape |
\f | 換頁 |
\\ | 反斜線 |
\$ | 美圓符號 |
\' | 單引號 |
\" | 雙引號 |
... |
\r 和 \n 在 windows 中的對比效果不明顯,在 Linux 中,\n 表示換到下一行,但不會回到行首;而 \r 表示光標回到行首,但仍在本行
<?php <<<EOD 這是 heredoc 語法結構 EOD ?>
<?php <<<'EOD' 這是 nowdoc 語法結構 EOD ?>
heredoc 和 nowdoc 語法結構和雙引號與單引號的關係相似,heredoc 能夠解析上面列出的特殊字符,nowdoc 不能夠。heredoc 語法結構和 nowdoc 語法結構的結束標識符必須在行首。
整型
在 32 位操做系統中,有效的數值範圍的 -2147483648~2147483647(書上這麼寫的),在 PHP7 (不要問我爲何是 PHP7,由於我用 PHP7 測試的)中能夠使用 PHP_INT_MAX
和 PHP_INT_MIN
來獲取範圍的最大最小值。整型能夠使用十進制、二進制、八進制、十六進制來表示,使用八進制,須要在數字前面加上0,使用十六進制須要在數字前面加上0x。
<?php echo 123; // 正數 echo -123; // 負數 ?>
<?php echo 0b10011; ?>
<?php echo 0123; ?>
在八進制中,若是出現非法數字 8,9這些,程序會報錯(PHP7 中是這樣)
<?php echo 0x123; ?>
整數溢出
若是給定一個數超出了 integer 的範圍,會被解釋爲 float。
不要將未知分數強制轉換爲 integer
<?php echo (int)( (0.1 + 0.7) * 10 ); // 結果是 7 ?>
浮點類型
浮點類型默認有兩種格式,標準格式的科學記數法格式
<?php $float = 3.1415; $float2 = -23.3; $float3 = 2.34E2; echo pi(); // 圓周率 ?>
浮點型數值只是一個近似值,要儘可能避免浮點數比較大小
數組 array
數組的定義:
<?php $arr = array( $key => $val, ... ); // 或 $arr = [ $key => $val, ... ]; ?>
數組的取值:
<?php echo $arr[$key]; ?>
數組 key 的強制轉換
- 包含合法的十進制整數值的字符串會被轉換成整數值,例如 "3" 會轉換成 3,而 "03" 則不會轉換成 3
- 浮點數也會強制轉換爲整型,方式爲向下取整,例如 2.3 會轉換成 2
- 布爾值中 true 會轉換爲 1,false 轉換爲 0
- Null 會轉換爲空字符串""
若是在數組中定義了相同的鍵名,只使用最後一個
對象 object
類的實例,使用 new 關鍵字建立。
<?php class Foo { protected $name = 'class'; public function show() { echo $this->name; } } $obj = new Foo(); // 這是的 obj 就是一個對象,是從 Foo 這個類實例化來的 ?>
資源類型 resource
手冊上解釋的是:它是保存了外部資源的一個引用。
NULL
表示一個變量沒有值,如下狀況會被認爲是 NULL
轉換操做符 | 轉換類型 |
---|---|
(boolean) | 布爾類型 |
(string) | 字符串類型 |
(integer)/(int) | 整型 |
(float) | 浮點型 |
(array) | 數組 |
(object) | 對象 |
(unset) | NULL(PHP5) |
還能夠使用 settype(mixd var, string type) : boolean 函數對類型進行轉換,第一個參數是要轉換的變量,第二個參數是要轉換的類型,支持:boolean, float, integer, array, null, object, string。轉換成功返回 true,失敗返回 false。
PHP 中內置了檢測數據類型的系列函數,判斷一個變量是否屬於某個類型,是的話返回 true,不是返回 false。
函數 | 檢測類型 |
---|---|
is_bool(mixed var) : boolean | 布爾 |
is_string(mixed var) : boolean | 字符串 |
is_float(mixed var) : boolean/is_double(mixed var) : boolean | 浮點型 |
is_integer(mixed var) : boolean/is_int(mixed var) : boolean | 整型 |
is_null(mixed var) : boolean | NULL |
is_array(mixed var) : boolean | 數組 |
is_object(mixed var) : boolean | 對象 |
is_numeric(mixed var) : boolean | 數字或由數字組成的字符串 |
常量是一個簡單的標識符,在腳本運行期間不容許改變。
常量的定義
使用 define() 函數,語法格式:
define(string constant_name, mixed value, boolean case_sensitive = false);
define() 函數說明:
參數 | 說明 |
---|---|
constant_name | 必須,常量名 |
value | 必須,常量值 |
case_sensitive | 可選,指定是否大小寫敏感,默認爲 false,表示敏感 |
常量的取值
一是直接使用常量名取值,另外一種是使用 constant()
函數取值。
判斷一個常量是否已經定義
使用 defined() 函數判斷一個常量是否已經定義,若是定義了則返回 true,不然返回 false。
PHP 中經常使用的預約義常量
常量名 | 功能 |
---|---|
__FILE__ | PHP 程序文件名 |
__LINE__ | 當前所在行 |
PHP_VERSION | PHP 版本 |
PHP_OS | 執行 PHP 解析器的操做系統 eg. WINNT |
E_xxx | PHP 的錯誤調試部分,參考 error_reporting() 函數 |
變量是在程序執行過程當中能夠變化的量,用一個美圓符號後面跟上變量名錶示,區分大小寫。
變量名必須以字母或下劃線開頭,後面跟上數字、字母、下劃線,不能包含特殊符號,也不能以數字或其它特殊符號開頭。變量能夠是中文,但不建議使用。
$this 是一個特殊的變量,不能被賦值
<?php // 變量的聲明 $foo = 'variable'; $foo1 = 'var'; // $1_a = '1a'; // 變量名不合法 // $@abc = 'abc'; // 變量名不合法 $var = $foo; // 使用 $foo 給變量 $var 賦初值 $var2 = &$foo; // 引用賦值 $var2 = 'var2'; // 改變 $var2 的值 var_dump($foo); // $foo 的值也會改變 var_dump($var); // $var 的值仍是 variable ?>
變量必須在有效的範圍內使用,超出變個範圍,變量就失去的意義。
全局變量不能被函數直接使用,若是要使用,必須在函數中聲明爲 global
// 變量做用域 $a = 1; function test() { echo $a; // 這裏不會有任何輸出,調用的局部的變量 $a var_dump($a); // 打印結果顯示 NULL } test(); // 全局變量在函數內部使用的時候,必須使用 global $b = 2; function test2() { global $b; // 聲明爲 global echo $b; // 結果爲 2 } test2(); // 使用 $GLOBALS 代替 global $c = 3; function test3() { $GLOBALS['c'] = 5; // 使用 $GLOBALS 代替 global } test3(); echo $c; // 顯示結果爲 5
通常來講,在函數中聲明的變量,在函數運行結束時,就會自動被清除掉,使用靜態變量則會被保留。
// 靜態變量 function static_var() { static $d = 1; echo $d++; } static_var(); // 顯示 1 static_var(); // 顯示 2
用一個變量的值,做爲另外一個變量的變量名。
// 可變變量 $e = 'f'; // 變量值爲 f $$e = 'I am f'; // 至關於 $f = 'I am f'; echo $f;
// 預約義變量 dump($GLOBALS); // 全局做用域中所有變量 dump($_SERVER); // 服務器和執行環境信息 dump($_GET); // HTTP GET 變量 dump($_POST); // HTTP POST 變量 dump($_FILES); // HTTP 文件上傳變量 dump($_REQUEST); // HTTP REQUEST 變量 dump($_SESSION); // session 變量 dump($_COOKIE); // cookies dump($_ENV); // 環境變量 dump($php_errormsg); // 前一個錯誤信息 dump($HTTP_RAW_POST_DATA); // 原生 POST 數據 dump($http_response_header);// http 響應頭 function dump($var) { echo '<pre>'; print_r($var); echo '</pre>'; }
運算符是能夠經過給出的一個或多個值,得出另外一個值的東西。
從上到下,優先級下降。
運算符 | 結合方向 |
---|---|
clone, new | 無 |
**[乘方運算符] | 右 |
++, --, ~[取反減1], (int), (float), ..., @ | 右 |
instanceof | 無 |
! | 右 |
*, /, % | 左 |
+, -, . | 左 |
<<, >> | 左 |
<, <=, >, >= | 無 |
==, !=, ===, !==, <>[至關因而 !=], <=>[a <=> b,若是a > b,返回1,相等返回0,不然返回-1] | 無 |
&[按位與] | 左 |
[1] | 左 |
| | 左 |
&& | 左 |
// | 左 |
?? | 右 |
按位異或 ↩︎