【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句
目錄
PHP概述
PHP運行環境安裝
Web原理簡述
PHP 基本語法
特點:
指令分隔符 [;]
注釋(和C語言類似)
簡單的PHP語句
PHP語法錯誤:
變量
變量的聲明
初始化
賦值
[=] ?
引用賦值 $c =&$a
變量的釋放
變量的命名
可變變量
變量的類型
常量
預定義常量
運算符
算術運算符(見代碼)
邏輯運算符
運算符優先級
比較運算符
賦值運算符
算術賦值運算符??
其他賦值運算符??
其他運算符
流程控制語句
順序執行
分支執行
單向分支
雙向分支
多向分支
循環語句
while
do while
for(好!)
特殊流程控制語句
九九乘法表
PHP概述
- PHP是一門編程語言,PHP主要目的是允許網絡開發人員快速編寫動態頁面
- 簡單來說PHP主要被用于開發各種類型的網站程序
- 細化點說PHP可以用于收集表單數據,生成動態網頁,字符串處理,動態輸出圖像,處理服務端文件,與數據庫交互,會話跟蹤,處理XML文件,支持大量的網絡協議,服務器端的其他相關操作!
- PHP是解釋型腳本語言不需要事先編譯,運行在服務器端!
- PHP可以運行在windows、linux等各種操作系統上!
專門用于開發網站的
腳本后綴名.php 可以與HTML語言進行混編,腳本后綴依然是.php(還可以在PHP代碼中輸出HTML語言)
解釋型語言,不要編譯直接運行
弱類型
PHP運行需要環境:
Windows: phpstudy
Linux: 單獨安裝(不是系統自帶的)
PHP運行環境安裝
Apache+PHP+MySQL是PHP比較流行的生存環境
LAMP
Web原理簡述
1.打開瀏覽器
2.輸入URL地址
3.顯示網站內容
PHP 基本語法
PHP 語言標記
? ? ? 開始標記 <?php
? ? ? 結束標記? ?>
特點:
1、<?php?>這之間就表示進入PHP模式,在開始和結束處之外的內容都會被PHP解析器忽略
2、可以直接嵌入到html代碼中,并且可以嵌入到html代碼中的任何地方
3、在一個html文檔中可以嵌入任意多個PHP標記
4、文件末尾的PHP代碼結束標記可以不要,在一些情況下省略掉更好
指令分隔符 [;]
一個php語句必須(建議)要用分號結束
注釋(和C語言類似)
單行注釋 //
多行注釋 /*? */
注意:
php代碼中注釋,不會顯示在瀏覽器的源代碼中。
php運行環境是服務器,我們瀏覽器看到的是PHP引擎運行PHP代碼后的執行結果
在我們PHP引擎解釋PHP代碼的時候,注釋被自動過濾掉了。
為什么HTML代碼客戶端可以看到源代碼?
因為HTML運行環境是瀏覽器!
簡單的PHP語句
1、phpinfo();
2、echo 用于輸出簡單的變量
3、var_dump(); 用于輸出變量值及其變量類型
PHP語法錯誤:
Error???????????? 會結束腳本執行
Warning??????? 只提示,不影響執行
Notice?????????? 只提示,不影響執行
變量
變量的聲明
不需要聲明變量,但要初始化
初始化
給變量初次賦值,或者變量的默認值
賦值
[=] ?
根據實驗說明:PHP腳本是順序執行的
引用賦值 $c =&$a
相當于給$a起了一個別名,$c值的改變,$a也隨之改變
<?php $a=10; $b=$a; $b=$b+1; echo $a; //10 echo "|"; echo $b; //11 echo "<hr />"; $c=&$a; //$a和$c實際上指向的是同一塊內存空間(相當于給$a起了一個別名) $c=$c+1; echo $a; //11 echo "|"; echo $c; //11 ?>變量的釋放
unset()
<?php echo "This is var.php"; echo "<hr />"; echo "<span style='color:pink;background-color:blue'>123</span>"; ?>//一個頁面中可以插入多個PHP標記(不能混用) <hr /><?php //PHP在使用變量的時候不需要進行變量聲明, //如果一個變量沒有初始化,內存中就沒有這個變量。 echo $name; $name="AJEST"; echo "<br />"; echo $name; echo "<br />"; unset($name); //釋放了變量 echo $name;?>?
變量的命名
? ?@? 以$符號開頭
? ?@? 嚴格區分大小寫
? ?@? 字母|數字|下劃線,不能以數字開頭
$name1
$my_name
$_my_name
$1_name?? 錯誤
? ?@? 盡量不要使用php關鍵字作為變量名
可變變量
<?php $name="hello"; $$name="world"; echo $name; //輸出hello echo "<br />" echo $$name; //world echo $hello;//實際上$hello是$$name ?>?
變量的類型
布爾類型?
true false,其他均會被認為true
以下所有內容會被當做false
布爾值false
0
浮點型0.0
空白字符串和字符串0
沒有成員的數組
NULL
var_dump(); 用于輸出變量值及其變量類型
int? 存儲整數
float 存儲小數 3.14
字符串 string
字符串的定義:
@??? '? '
@??? " "
@?? 定界符
注意:
@單引號定義的字符串中出現單引號要轉義[\]
@單引號定義的字符串中,[$] 符號原樣輸出
@雙引號定義的字符串中,[$] 是變量的開始,整體變量名用{ }括起來
@單雙引號定義的字符串中輸入的特殊字符包括 [ ' , " , $ ...]需要轉義
@定界符開始和結束后面不能有任何字符包括空白字符和注釋
數組
對象 不講
?
常量
不變的量
定義?? define("NAME","GGG");
直接使用即可
預定義常量
常量名????????????????????????????????????? 常量值
__FILE__?????????????????????????????? ? 當前的文件名(文件名帶路徑)
__LINE__?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當前的行數
__FUNCTION__??????????????????? ? 當前的函數名
__CLASS__?????????????????????????? ? 當前的類名
__METHOD__????????????????????? ?? 當前的對象的方法名
PHP_OS??????????????????????????????? ? UNIX或WINNT等
PHP_VERSION???????????????????? ? 當前的PHP服務器的版本
DIRECTORY_SEPARATOR???? \或/ ?? 根據操作系統決定目錄的分隔符
?
運算符
算術運算符(見代碼)
取模就是取余數。
邏輯運算符
php手冊
非??????????? !
與??????????? and 或者 &&
或??????????? or ||
異或???????? xor 不同為真,相同為假
與運算的優先級高于或運算。
賦值運算符的優先級高于邏輯運算符
運算符優先級
括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優先級和結合性來決定,通常能夠增加代碼的可讀性。
下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。
| 不適用 | clone?new | clone?和?new |
| 右 | ** | 算術運算符 |
| 不適用 | ++?--?~?(int)?(float)?(string)?(array)?(object)?(bool)?@ | 類型、遞增/遞減 |
| 左 | instanceof | 類型 |
| 不適用 | ! | 邏輯運算符 |
| 左 | *?/?% | 算術運算符 |
| 左 | +?-?. | 算術運算符?和?字符串運算符 |
| 左 | <<?>> | 位運算符 |
| 無 | <?<=?>?>= | 比較運算符 |
| 無 | ==?!=?===?!==?<>?<=> | 比較運算符 |
| 左 | & | 位運算符?和?引用 |
| 左 | ^ | 位運算符 |
| 左 | | | 位運算符 |
| 左 | && | 邏輯運算符 |
| 左 | || | 邏輯運算符 |
| 右 | ?? | null 合并運算符 |
| 左 | ? : | 三元運算符 |
| 右 | =?+=?-=?*=?**=?/=?.=?%=?&=?|=?^=?<<=?>>=???= | 賦值運算符 |
| 不適用 | yield from | yield from |
| 不適用 | yield | yield |
| 不適用 | ||
| 左 | and | 邏輯運算符 |
| 左 | xor | 邏輯運算符 |
| 左 | or | 邏輯運算符 |
?
比較運算符
| $a == $b | 等于 | true,如果類型轉換后?$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,如果?$a?嚴格小于?$b。 |
| $a > $b | 大于 | true,如果?$a?嚴格大于?$b。 |
| $a <= $b | 小于等于 | true,如果?$a?小于或者等于?$b。 |
| $a >= $b | 大于等于 | true,如果?$a?大于或者等于?$b。 |
| $a <=> $b | 太空船運算符(組合比較符) | 當$a小于、等于、大于?$b時 分別返回一個小于、等于、大于0的?int?值。 |
當兩個操作對象都是?數字字符串, 或一個是數字另一個是?數字字符串, 就會自動按照數值進行比較。 此規則也適用于?switch?語句。 當比較時用的是?===?或?!==, 則不會進行類型轉換——因為不僅要對比數值,還要對比類型。
比較參與運算的單元是否相同,相同為真,不同為假
<?php var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> trueswitch ("a") { case 0:echo "0";break; case "a": // never reached because "a" is already matched with 0echo "a";break; } ?>賦值運算符
算術賦值運算符??
| $a += $b | $a = $a + $b | 加法 |
| $a -= $b | $a = $a - $b | 減法 |
| $a *= $b | $a = $a * $b | 乘法 |
| $a /= $b | $a = $a / $b | 除法 |
| $a %= $b | $a = $a % $b | 取模 |
| $a **= $b | $a = $a ** $b | 指數 |
其他賦值運算符??
| $a .= $b | $a = $a . $b | 字符串拼接 |
?
其他運算符
$a= 10>20 ? 10:20(三元運算符)
``? ? 將字符串當作命令執行(不是單引號,是Tab上面的那個鍵)
@? ?屏蔽提示,警告
<?php $a=10<20?10:20; echo $a; echo "<hr />"; echo `ping www.baidu.com`; ?><hr /><?php echo `whoami`; echo "<hr />"; echo @$name; //直接寫$name會報Notice,在前面加一個@,屏蔽警告、提示 ?>流程控制語句
順序執行
PHP代碼執行的時候,依次順序執行
分支執行
單向分支
if(判斷條件){執行語句塊}
雙向分支
if(判斷條件){執行語句塊1}else{語句塊2}
多向分支
if(判斷條件){執行語句塊1}elseif{語句塊2}elseif{語句塊3}....
elseif
??? switch
?????? case
?????? default
case后面的語句是不需要用大括號括起來的!
循環語句
while
? ?當滿足條件時,執行
? ?計數器,變量
? ?判斷條件
do while
? ? 先執行再判斷
for(好!)
特殊流程控制語句
break;? 跳出本層循環
break 2;? 跳出兩層循環
continue; 跳過本次循環
die()??? 結束本次腳本執行
exit()?? 結束本次腳本執行
九九乘法表
?
總結
以上是生活随笔為你收集整理的【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:单志广(1974-),男,博士,国
- 下一篇: 基于HBase+ ElasticSear