1. 程式人生 > >Web安全學習_PHP學習_語法、變數、常量、函式、陣列

Web安全學習_PHP學習_語法、變數、常量、函式、陣列

一、語法

  1. 定界符php程式碼需要包含在<?php ?>中
<?php
	程式碼段	
?>
  1. 註釋方法
<?php
	//單行註釋
	#單行註釋
	/*
	多行
	註釋
	*/
?>

二、 變數

  1. 定義:$變數名
<?php
	$a=10;//定義變數a並賦值為10

/*-----------變數的說明---------------------------
※php為弱型別語言,根據所賦值而確定變數的型別;
※變數名由字母、數字和下劃線(_)組成,開頭不能為數字;
※變數名區分大小寫,如$A和$a為兩個不同的變數
------------------------------------------------*/
?>
  1. 字串變數
    字串變數並置運算子(.)
<?php
	$str1="hello";
	$str2="world";
	echo $str1." "."$str2";//通過並置符將hello、空格、world連線在一起
?>

字串操作函式手冊
字串操作函式手冊

  1. 區域性變數與全域性變數
    函式定義的變數為全域性變數,全域性變數可以在除函式內部以外的任何地方呼叫,在函式內部呼叫需要加上global關鍵字
<?php
	$a=10;//定義全域性變數$a
	function myTest(){
		$b=20;//定義區域性變數$b
		echo $a;
		echo $b;
	}
	myTest();//呼叫此函式時將會報錯,函式內部無法呼叫全域性變數$a
?>
//-------------若在函式中呼叫則可採取下列方法---------------
<?php
	$a=10;
	function myTest(){
		global $a;//呼叫全域性變數加關鍵字global
		$b=20;
		echo $a;
		echo $b;
	}
	myTest();//此時全域性變數$a和區域性變數$b都可以輸出
?>

全域性變數儲存在一個數組$GLOBALS[index]中,index為全域性變數的變數名,函式內和函式外均可通過此陣列的方法呼叫全域性變數

<?php
	$a=10;
	$b=20;
	function add(){
		$GLOBALS['a']+=$GLOBALS['b'];
	}
	add();
	echo $a;//此時$a=30
?>

static關鍵字定義了靜態變數,函式內定義的區域性變數當函式呼叫結束後會自動刪除,若想保留函式內定義的區域性變數的值則需要在函式內定義靜態變數

<?php
	function add1(){
		static $a=10;
		$b=20;
		$a++;
		$b++;
		echo $a;
		echo $b;
	}
	add1();//此時輸出結果$a=11,$b=21
	add1();//$a=12,$b=21
	add1();//$a=13,$b=21
?>

三、常量

定義:呼叫define(a,b,c)函式。a:常量名;b:常量值;c:是否對常量名大小寫敏感(設定為true不區分大小寫),此引數可省略,預設表示區分大小寫

常量為全域性作用域一旦定義則不能在任何地方改變,可以在任何地方使用

<?php
	define("Name","hello PHP",true);//定義不區分大小寫的常量
	function test(){
		echo name;//函式內呼叫常量
	}
	test(); //輸出"hello PHP"
?>

一些PHP已經定義好的超級全域性常量
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION

$_SERVER:包含了頭資訊、路徑、以及指令碼位置等資訊的陣列。由web伺服器建立。具體可參見菜鳥教程

$_REQUEST:用於接收表單提交的資料

<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
	使用者名稱:<input type="text" name="username">
	<input type="submit" name="">
	<?php
		$name=$_REQUEST['username'];//定義$name變數來接收使用者名稱,方框內容為input標籤的name屬性
		echo $name;//輸出使用者名稱的內容
	?>
</body>
</html>

四、 輸出的方法

echo和print區別:

  • echo可以輸出多個字串,print只能輸出一個字串
  • echo沒有返回值,print有返回值為1,echo輸出速度快於print
<?php
	echo "hello","world","!";
	print "hello","world";//此行語法錯誤,print只能輸出一個字串
?>

五、PHP EOF定義字串

功能:定義一個字串,開始結束標記一致。

<?php
	$a="hello";
	$str=<<<EOF
	"PHP"	
	"EOF"
	$a
EOF;
//結尾標記須在行首寫,以分號結束。
echo $str;
?>
//開始標記與結束標記可以替換成其他標記
//開始標記有三種,不加引號、加雙引號、加單引號。不加引號和加雙引號作用相同,可以解析字串中的變數。加單引號不能解析字串中的變數

六、運算子

運算子

運算子 名稱及描述
x and y 與(x和y全真即真)
x or y 或(x、y一真為真)
x xor y 異或(x和y相異則為真)
x&&y 與(x和y全真即真)
x || y 或(x、y一真為真)
!x
== 等於 (等號左右只要值相同即為真)
=== 絕對等於 (等號左右值和型別均相同才為真)
!= 不等於(值不同即為真,型別不同無關)
!=== 絕對不等於(值或型別有一個不相同即為真)

and、or與&&、||的區別:
and、or的優先順序低於賦值運算子(=),&&、||的優先順序大於賦值運算子(=)

<?php
	$a=10;
	$b=10.0;
	$c=20;
	$jud1=$a<0 or $b>0;//由於優先順序小於(=)所以$jud1的值為假
	$jud2=$a<0 || $b>0;//由於優先順序大於(=)所以$jud1的值為真
	$jud3=$a!=$b;//$jud3的值為假
	$jud4=$a!==$b;//$jud4的值為真
?>

三元運算子
格式:a?b:c
說明:a、b、c為表示式,若表示式a為真則返回表示式b的值,a為假返回表示式c的值。

PHP5.3後可支援省略表示式b的內容,a?:c,表示式a為真返回a的值,a為假返回c的值

<?php
	$a=10;
	$b=0;
	$x=$a>0?:$b;//$x的值為true
	$y=$a>0?$a:$b;//$y的值為10
?>

七、陣列

陣列分為:數值陣列、關聯陣列、多維陣列

陣列的定義:通過array()函式或單獨定義

<?php
//----------整體定義(自動分配id)----------
	$arr1=array("值1","值2");
//----------單獨定義(手動分配id)----------
	$arr2[0]="值1";
	$arr2[1]="值2";
//----------求陣列的長度------------------
	$Arr1Num=count($arr1);//求出陣列$arr1的長度為2
?>
  1. 數值陣列
    陣列內容可以為數字或字串,id從0開始
  2. 關聯陣列
    關聯陣列的定義及遍歷
<?php
//----------第一種定義方法------------
	$People=array("Tony"=>"60","Alice"=>"90","Bob"=>"70");
//----------第二種定義方法------------
	$People2['James']="80";
	$People2['Jorden']="78";
//----------關聯陣列的遍歷(foreach迴圈)------------
	foreach($People as $x=>$x_value){
		echo "$x=".$x."value=".$x_value."<br>";
	}
	//$x為下標,$x_value為值,名字可以改變
?>

foreach迴圈:每迴圈一次,當前陣列的值就會被賦給$value

格式:foreach($arr as $value)
	{
	程式碼塊;
	}
<?php
//定義一個數組並輸出
	$arr=array("one","two","three");
	foreach($arr as $value){
		echo $value;
	}
?>

運算元組的函式手冊
運算元組的函式手冊

八、函式

  1. 內建函式:菜鳥教程
  2. 自定義函式:
    格式:
<?php
	function 函式名(引數列表
 - [ ] List item

){
		函式體//函式名命名規則同變數
	}
?>